在C ++中,有什么方法可以将函数“同时”应用于向量的所有元素?

时间:2018-12-24 10:28:35

标签: c++ vector stl

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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;
}