是否有任何有效且惯用的方法来执行以下操作?
std::vector<int> a = { 1, 2, 3, 4 };
std::vector<int> b = { 5, 6, 7, 8 };
for (std::size_t i = 0 ; i < a.size() ; ++i)
{
a[i] += b[i];
}
我试图避免使用括号/索引表示法,并且只使用迭代器,以便操作可以与任何具有前向迭代器的容器一起使用。我想到了以下解决方案:
std::vector<int> a = { 1, 2, 3, 4 };
std::vector<int> b = { 5, 6, 7, 8 };
std::transform(a.begin(), a.end(),
b.begin(),
a.begin(),
std::plus<int>());
但是,有冗余,a.begin()
我只能使用+
而不是+=
. 标准库中是否有一些算法可以让我在没有任何冗余的情况下使用迭代器,或者我必须手动编写完整的循环?