1. ホーム
  2. c++

[解決済み] forループに対するstd::for_eachの優位性

2022-04-15 04:26:38

質問

の利点は何ですか? std::for_each オーバー for ループ?私にとっては std::for_each は、コードの可読性を阻害するようにしか見えません。それなのに、なぜ一部のコーディング規約では使用を推奨しているのでしょうか?

どのように解決するのか?

の良いところは C++11 (以前はC++0xと呼ばれていました)、この退屈な議論に決着をつけることができるのです。

つまり、コレクション全体を反復処理したいと考えるまともな人は、まだこれを使わないでしょう。

for(auto it = collection.begin(); it != collection.end() ; ++it)
{
   foo(*it);
}

またはこれ

for_each(collection.begin(), collection.end(), [](Element& e)
{
   foo(e);
});

を指定すると 範囲指定 for ループ の構文が利用可能です。

for(Element& e : collection)
{
   foo(e);
}

この種の構文は、JavaやC#では以前から利用可能であり、実際にはもっと多くの foreach ループは、古典的な for のループは、私が見た最近のすべてのJavaやC#のコードにありました。