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