Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C++;有没有办法应用函数';同时';向量的所有元素?_C++_Vector_Stl - Fatal编程技术网

C++ 在C++;有没有办法应用函数';同时';向量的所有元素?

C++ 在C++;有没有办法应用函数';同时';向量的所有元素?,c++,vector,stl,C++,Vector,Stl,我有一个长度为6的向量,元素为1或0。我想在每个第I个元素两侧的2个元素上应用“XOR”。e、 对于i=1,我将对第0个和第2个元素应用xor。然后将第i个元素替换为该xor输出。我想对原始向量上的所有这样的“I”同时应用xor。有没有办法不用另一个向量就能做到这一点?当你说“同时”时,你的意思是一个异或运算不应该使用前一个异或运算的中间数据,而是使用原始向量的数据,对吗?在这种情况下,由于每个步骤都会删除信息(元素i的前一个状态会被结果覆盖),因此,如果没有至少一些中间存储,就无法执行此操作。

我有一个长度为6的向量,元素为1或0。我想在每个第I个元素两侧的2个元素上应用“XOR”。e、 对于i=1,我将对第0个和第2个元素应用xor。然后将第i个元素替换为该xor输出。我想对原始向量上的所有这样的“I”同时应用xor。有没有办法不用另一个向量就能做到这一点?

当你说“同时”时,你的意思是一个异或运算不应该使用前一个异或运算的中间数据,而是使用原始向量的数据,对吗?在这种情况下,由于每个步骤都会删除信息(元素
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;
}
bool-prev=vec[0];
对于(int i=1;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;
}
bool-prev=vec[0];
对于(int i=1;i
奇怪的需求,只需使用另一个向量。奇怪的需求,只需使用另一个向量。这就解决了问题,除了两件事:大小是6,所以我要
断言(vec.size()=6)
。如果您想让它更通用于其他大小,您至少必须确保向量在读取其第一个元素之前不是空的。不管怎么说,虽然这段代码看起来不错,但我倾向于不做其他人的家庭作业@UlrichEckhardt你是对的,但我认为看到一个示例代码可以很好地理解概念谢谢Nima!现在看起来很简单。我应该多搔搔头。这就解决了问题,除了两件事:大小是6,所以我要断言(vec.size()==6)。如果您想让它更通用于其他大小,您至少必须确保向量在读取其第一个元素之前不是空的。不管怎么说,虽然这段代码看起来不错,但我倾向于不做其他人的家庭作业@UlrichEckhardt你是对的,但我认为看到一个示例代码可以很好地理解概念谢谢Nima!现在看起来很简单。我应该多搔搔头。是的,你说得对。我知道需要中间存储,但当然,使用大小为“int”的存储比使用6个整数的完整向量(在这个问题中)更有效。是的,你做对了。我知道需要中间存储,但当然,具有大小为“int”的存储比具有6个整数的完整向量(在这个问题中)更有效。