在这种情况下,我的lambda表达式应该如何显示?我想不使用std::plus<>
而是使用lambda添加向量。
MatVect add_vectors(const MatVect& v1, const MatVect& v2)
{
MatVect v(v1.size());
std::transform(v1.cbegin(), v1.cend(), v2.cbegin(), v.begin(), [](){ return });
return v;
}
答案 0 :(得分:2)
它应该像这样:
std::transform(v1.cbegin(), v1.cend(), v2.cbegin(), v.begin(), [](const int& i, const int& j){ return i + j; });
最小示例:
#include<iostream>
#include<vector>
using MatVect = std::vector<int>;
MatVect add_vectors(const MatVect& v1, const MatVect& v2)
{
MatVect v(v1.size());
std::transform(v1.cbegin(), v1.cend(), v2.cbegin(), v.begin(), [](const int& i, const int& j){ return i + j; });
return v;
}
int main()
{
MatVect mv1 = {1, 2, 3, 4, 5};
MatVect mv2 = {2, 4, 6, 8, 10};
MatVect mv3 = add_vectors(mv1, mv2);
for(auto const& i : mv3)
{
std::cout << i << " ";
}
return 0;
}
请参见现场演示here。
答案 1 :(得分:1)
我会尝试以下类似的方法
MatVect add_vectors(MatVect const &v1, MatVect const &v2)
{
MatVect v(size(v1));
std::transform(std::cbegin(v1), std::cend(v1), std::cbegin(v2), std::begin(v),
[](auto const lhs, auto const rhs)
{
return lhs + rhs;
});
return v;
}
剩下的问题是,为什么不使用std::plus<>
?