我只是想知道是否有更可读的方法来组合两个向量的值?
#include <vector>
#include <iostream>
int main( int argc, char ** argv )
{
std::vector<int> v1 = { 1, 2, 3, 7 };
std::vector<int> v2 = { 1, 2, 3, 5, 19 };
std::vector<int>::iterator v2it = v2.begin();
if( v1.size() > v2.size() )
{
for( auto v1it = v1.begin(); v1it != v1.end(); ++v1it )
{
*v1it = *v1it + *v2it;
std::cout << *v1it << std::endl;
++v2it;
}
}
else
{
auto v1it = v1.begin();
for( auto v2it = v2.begin(); v2it != v2.end(); ++v2it )
{
*v2it = *v2it + *v1it;
std::cout << *v2it << std::endl;
++v1it;
}
}
return 0;
}
以上输出为:
2 4 6 12 19
答案 0 :(得分:3)
您可以使用std::transform()
,它假定长度相同的范围。我将把它留给你作为练习,找出如何处理不同长度范围的情况:
#include <vector>
#include <iterator>
#include <iostream>
#include <algorithm>
#include <functional>
int main()
{
std::vector<int> v1 = { 1, 2, 3, 7 };
std::vector<int> v2 = { 1, 2, 3, 5, 19 };
std::transform(begin(v1), end(v1), begin(v2),
std::ostream_iterator<int>(std::cout, " "), std::plus<int>());
}
这是live example。
答案 1 :(得分:2)
如果你想用矢量做数学,你应该看一下std::valarray