C++有没有办法将函数'simultaneously'应用于向量的所有元素?

In C++ is there any way to apply a function 'simultaneously' to all the elements of a vector ?

本文关键字:向量 元素 应用于 simultaneously 函数 有没有 C++      更新时间:2023-10-16

我有一个长度为 6 的向量,元素要么是 1,要么是零。我想在每个第 i 个元素两侧的 2 个元素上应用"XOR"。例如,对于 i = 1,我将在第 0 和第 2 个元素上应用 xor。然后将第 i 个元素替换为此异或输出。我想在原始向量上同时对所有此类"i"应用异或。有什么方法可以在不使用其他向量的情况下实现这一点?

当你说"同时"时,你的意思是一个异或运算不应该使用来自前一个异或运算的中间数据,而应该使用来自原始向量的数据,对吧?在这种情况下,由于每个步骤都会擦除信息(元素i的先前状态被结果覆盖),因此如果没有至少一些中间存储,则无法做到这一点。但是,您只擦除了一点信息,并且该信息仅在下一步中需要,因此您不需要完整的附加向量。

使用临时变量来存储上一项:

bool prev = vec[0];
for(int i = 1; i < vec.size() - 1; i++){
    bool result = vec[i + 1] ^ prev;
    prev = vec[i];
    vec[i] = result;
}