.begin()
C++ ライブラリ配列で、メンバー関数とメンバー関数を使用すると便利な場合はどのような場合.end()
ですか?
cplusplus.com での使用例は、配列を反復処理することです。
for ( auto it = myarray.begin(); it != myarray.end(); ++it )
しかし
for (int i = 0; i < myarray.size(); i++)
そのために使用できます。
begin()
そしてend()
イテレータを返します。イテレーターは、さまざまなタイプのコンテナーにアクセスするための統一された構文を提供します。一見、単純な配列をトラバースするにはやり過ぎに見えるかもしれませんが、同じコードを記述してリストやマップをトラバースできると考えてください。
さまざまなコンテナーへのこの均一なアクセスにより、内部構造を知らなくても、すべてのコンテナーで機能するアルゴリズムを作成できます。最初から最後までの for ループは、はるかに大きなモザイクの最初の部分にすぎません。標準アルゴリズムのリストを調べて、この単純な抽象化の力を理解してください。
標準コンテナの要点は、コンテナを変更して同じ構文を使用できることです。リンクされたリストがある場合、最初の構文は引き続き機能します。
また、ポインターと同等です。i はインデックスなので、myarray[i] はそれよりもわずかに遅くなります。
他のコンテナとの汎用性に加えてbegin
、は範囲end
の場合に役立ちます
for (const auto& e : myarray)
リンクされたリストを反復処理してみましょう。唯一の効率的な方法は、最後に到達するまで、ある項目から次の項目へと繰り返すことです。