past-the-end
の意味は何ですか?なぜ私たちはend()
と呼んでいますか?STL C++の過去のイテレータは何ですか?
答えて
機能begin()
とend()
が半分開いた範囲を定義する([begin, end)
)を書くことができ、なぜだ、これは意味:
を範囲は、最初の要素を含んでいるが、最後の要素を除外します。したがって、名前は最後を過ぎています。
半分開いた範囲の利点がある:
それは空の範囲のために特別な処理を回避することができます。空の範囲の場合、
begin()
はend()
に等しくなります。ループは単に がend()
は、上記正解に別のポイントを追加
文字通り、配列の末尾を1つ指しているためです。
この要素は空であり、反復することはできますが逆参照はできないために使用されます。
int arry[] = {1, 2, 3, 4, /* end */ };
^^^^^^^
std::end(arry) would point here.
配列だけでなく、 'end'イテレータは、イテレータがどこから来たのか、値がどこに保持されているのかにかかわらず、ターゲットシーケンスの終わりを過ぎて指し示します。 –
それはコンテナの最後の要素を指していないので、どこか過去へのコンテナの最後の要素。
end()
を参照解除すると、結果はであり、未定義の動作になります。
数学の間隔と同様に、stlは[begin, end)
を使用します。
我々はfor (auto it = v.begin(); it != v.end(); ++it)
はい!コンテナについて言わない最初の答え。シーケンスを作成する必要はありません。 –
に達していない限り、引き続き:
それは要素を反復ループの終了判定基準が簡単となります。 これは配列と互換性があるためにも行われました。 例:
char arr[5];
strcpy(arr, "eakgl");
sort(&arr[0], &arr[5]);
これは正常に動作します。
sort(&arr[0], &arr[4]);
を、それが最後の文字を並べ替え逃す:あなたは与えていた場合は代わりに
。
これは空のコンテナを自然に表現するのにも役立ちます。
- 1. C++ STL unordered_mapイテレータ問題
- 2. 過去のイテレータを作成する方法は?
- 3. C++過去のエンドイテレータの場合、iterator +整数の結果は何ですか?
- 4. C++:マップからイテレータを消去した後、次のイテレータ
- 5. タイプ消去C++出力イテレータ
- 6. イテレータの無効消去
- 7. STL出力イテレータに相当するC#はありますか?
- 8. イテレータのカスタム実装消去C++
- 9. C++ STLのmapは::キーで消去するC++ STLのmap、に関しては非既存のキー
- 10. カスタムコンテナのSTL互換イテレータ
- 11. ブーストは、イテレータの消去トラブル
- 12. C++ STL Vectors:インデックスからイテレータを取得しますか?
- 13. C++ STL List/Setのクエリを返すのは何ですか?
- 14. は過去に
- 15. 過去のアラームトリガー
- 16. C++ STLのhash_set :: size()の複雑さは何ですか?
- 17. ラリーで現在の過去から過去のスプリントへのタスクの移動
- 18. JavaとC++のイテレータの違いは何ですか?
- 19. stl :: rawポインタ付きイテレータ
- 20. C言語のイテレータ
- 21. keystoneclient v3では過去に
- 22. stl :: mapイテレータ使用のCODESONARのバッファオーバーランコメント
- 23. は、過去n秒
- 24. スプライスのSTLコードは何ですか?
- 25. Windowsフォームアプリケーションで過去
- 26. Objective Cで過去の日付はどのように見えますか?
- 27. STLイテレータ:接頭辞のインクリメントが高速ですか?
- 28. 水銀で過去からの分岐
- 29. C++のイテレータ
- 30. イテレータをコピーせずにメモリリークを起こさずにSTLベクタの要素を消去する方法は?
+1素晴らしい答え。 – Nawaz
イラストはJosuttisのような臭いです。 – fredoverflow
'begin()'と 'end()'だけでなく、一般に、 '[begin、end]'はイテレータの出所や値の保持場所にかかわらず、値の**シーケンス**を定義します。 –