vector<int> vecIntsA{1, 2, 3, 4};
vector<int> vecIntsB{5, 6, 7, 8};
vector<int> vecIntsC(vecIntsA.size(), 0);
for(vector<int>::size_type i = 0; i < vecIntsA.size(); ++i)
{
vecIntsC[i] = vecIntsA[i] + vecIntsB[i];
}
问题&GT;是否有可用于在一行中完成此计算的STL算法?
答案 0 :(得分:5)
#include <algorithm>
#include <functional>
#include <vector>
std::vector<int> vecIntsA{1, 2, 3, 4};
std::vector<int> vecIntsB{5, 6, 7, 8};
std::vector<int> vecIntsC( vecIntsA.size(), 0)
std::transform( vecIntsA.begin(), vecIntsA.end(),
vecIntsB.begin(), vecIntsC.begin(), op);
其中op是二元运算,std::plus<int>()
或自定义求和函数,如:
int sumInt( const int& a, const int& b)
{
return a + b;
}
使用C ++ 14,您甚至可以放弃任何明确提及的类型并仅使用std::plus<>()
:
std::transform( vecIntsA.begin(), vecIntsA.end(),
vecIntsB.begin(), vecIntsC.begin(), std::plus<>());
答案 1 :(得分:5)
#include <algorithm>
#include <functional>
std::transform(vecInstA.begin(), vecInstA.end(),
vecInstB.begin(), vecInstC.begin(), std::plus<int>());