対応する非 constのような関数をconst_iterator提供しないのはなぜですか?const_iterator::base()iteratorreverse_iterator
次の擬似コードを検討してください(たとえば、幾何学的アルゴリズム):
std::container< point > universe;
auto it = std::cbegin(universe);
std::list< decltype(it) > interesting_subset = sieve(it, std::cend(universe));
auto structure = algorithm(interesting_subset);
universeすべての入力ポイントはどこにありますか。のメンバーのサブセットに含む反復子をsieve()-ing した後。以下は、 のメンバーへの参照 (反復子) で構成される から生成される を構築します。interesting_subsetuniversealgorithm()structureinteresting_subsetuniverse
最後に、point結果に含まれる sを変更しstructureます (たとえば、シフトします)。しかし、同様に、アクション中の modyfining からそれらを保護したいので、 /の反対として/algorithmを使用しました。最後に、 source への参照しかありません。std::cbeginstd::cendstd::beginstd::endconst_iteratorpoint
これは、iterator std::container< T >::const_iterator::base() constSTL コンテナーに含めたいメンバー関数の使用例です。