次の操作を実行するための効率的で慣用的な方法はありますか?
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()
、 を使用するだけで済み+
ません+=
。標準ライブラリに、冗長性を持たずにイテレータを使用できるアルゴリズムがありますか、または完全なループを手動で作成する必要がありますか?