【发布时间】:2020-06-03 13:59:56
【问题描述】:
给定以下向量:
std::vector<int> foo{1,2,3,4,5,6,7};
std::vector<int> bar{10,20,30,40,50,60,70};
最后我希望 foo 包含值 { 10, 2, 30, 4, 50, 6, 70 } 意味着替换所有奇数值。
我已经尝试过std::replace_if算法,但是如何获取bar对应的值呢?
// replace_copy_if example
#include <iostream> // std::cout
#include <algorithm> // std::replace_copy_if
#include <vector> // std::vector
bool IsOdd (int i) { return ((i%2)==1); }
int main () {
std::vector<int> foo{1,2,3,4,5,6,7};
std::vector<int> bar{10,20,30,40,50,60,70};
std::replace_if (foo.begin(), foo.end(), IsOdd, 0);
std::cout << "foo contains:";
for (auto i: foo){ std::cout << ' ' << i; }
std::cout << '\n';
return 0;
}
// output : foo contains: 0 2 0 4 0 6 0
// desired output : foo contains: 10 2 30 4 50 6 70
【问题讨论】:
-
如果两个数组的大小不同怎么办?
-
好点。在我的具体情况下,它会事先检查,因为数据会损坏
-
所以你想替换
foo中的值但是你测试打印bar,这是怎么回事? -
修复了代码中的问题,它与描述匹配
标签: c++ algorithm c++11 vector stdvector