Должно быть так:
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;
}
См. Демо здесь .