gpt4 book ai didi

c - 在 C 中合并字节数组的最有效方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:09 25 4
gpt4 key购买 nike

假设我有两个 char 数组,每个位置要么是 1,要么是 0。这两个数组在不同的进程中计算,然后发送回 master 进行合并,因此每个数组只写入其数组的特定范围:

p1 : [0, 0, 0, 0, 1, 1, 0, 1]

p2 : [1, 0, 1, 1, 0, 0, 0, 0]

目标:[1, 0, 1, 1, 1, 1, 0, 1]

但是,这些可能是非常大的数组。除了循环其中一个之外,有没有一种超快速的方法可以做到这一点?

澄清一下,它们应该是“或”。

最佳答案

假设字节粒度足够好,您可能希望使用 memcpy 将它们复制到输出数组中:

memcpy(goal, p2, 4);
memcpy(goal + 4, p1 + 4, 4);

您可以通过让 p1p2 只包含它们自己的范围来进一步优化它,例如:

char p1[4] = { 1, 1, 0, 1 };
char p2[4] = { 1, 0, 1, 1 };
char goal[8];
memcpy(goal, p2, 4);
memcpy(goal + 4, p1, 4);

请注意,您可能还想查看位 vector 打包 - 将八位打包到每个字符中。这将为大型数组节省大量内存,尽管它会使访问变得复杂。

关于c - 在 C 中合并字节数组的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com