2017-02-04 1 views
2

が、私はシーケンスコンテナのイテレータタイプとは何ですか?私は<em>を通じてC++プログラミング言語</em>を読んで

インサータに渡されたイテレータと言って、この段落を見つけました()は、容器にイテレータでなければなりません。シーケンスコンテナの場合、それは双方向イテレータ(その前に挿入できるように)でなければならないことを意味します。たとえば、 forward_list に挿入するイテレータを作るためにインサーター()を使用することはできません...

だから私はこの文を確認するだろう標準の相対的な部品を見つけるために始めました。しかし、私はこの段落で残っていた(23.2.6 [associative.reqmts]第6項)のみ連想コンテナに関する:連想コンテナの

イテレータは...双方向イテレータスタイルの

標準でシーケンスコンテナのイテレータタイプはどこにありますか?

+0

標準ではありませんが、[参考文献](http://en.cppreference.com/w/cpp/iterator/iterator_traits)。 –

+0

@πάνταῥεῖ私はstd :: iterator_traitsも認識していますが、コンパイル時に完了したと思います。シーケンスコンテナのイテレータタイプは実装定義されているため、標準では記述できません。 – b1sub

答えて

2

標準では、シーケンスコンテナの場合は別途記載されています。例えばforward_­listについては

dequeがランダムサポートシーケンスコンテナです:

forward_­listは前方イテレータと... dequeについては

をサポートするコンテナでありますイテレータにアクセスする([random.access.iterators])。

シーケンスコンテナのイテレータカテゴリは、少なくとも前方イテレータカテゴリであることが期待できます。

+0

他のシーケンスコンテナのイテレータは_implementaion-defined_です。私は少し不思議ですが、_implementation_defined_ですが、これらのコンテナのイテレータのあるレベルを保証する下限があります。 – b1sub

+1

@ Il-seobBae実装定義ではなく、標準ではそれらを個別に指定しています。 N4606には、シーケンスコンテナの記述があります。「シーケンスコンテナのイテレータとconst_iteratorタイプは、少なくとも前方イテレータカテゴリにする必要があります。 – songyuanyao

+0

ありがとうございます。 – b1sub

関連する問題