const_iterator と iterator の違いは何ですか? [重複] 質問する

const_iterator と iterator の違いは何ですか? [重複] 質問する

STL 内の実装に関して、これら 2 つの違いは何ですか。パフォーマンスに関しての違いは何ですか? 「読み取り専用」でベクトルをトラバースする場合は、 が好ましいと思いますconst_iterator

ありがとう。

ベストアンサー1

パフォーマンスの違いはありません。

Aはconst_iterator定数値を指すイテレータ(const T*ポインタのような)であり、これを逆参照すると定数値(const T&)への参照が返され、参照された値の変更が防止されます。const-正確さ

コンテナーへの const 参照がある場合、 のみを取得できますconst_iterator

編集済み:私は「const_iterator定数ポインターを返します」と述べましたが、これは正確ではありません。指摘してくれた Brandon に感謝します。

編集:COW オブジェクトの場合、非 const イテレータを取得する (またはそれを逆参照する) と、コピーがトリガーされる可能性があります。( std::stringCOW を使用する一部の旧式で現在は許可されていない実装)。

おすすめ記事