C++ STLにはいくつのタイプのイテレータがありますか?今のところ、私はこれらの知っている:イテレータのタイプ:出力vs入力vs.前方アクセスvsランダムアクセス反復子
- 出力イテレータ
- 入力イテレータ
- イテレータ
- ランダムアクセスイテレータ
はもっとありますか?彼らの違いは何ですか?それぞれの限界と特徴は何ですか?どのタイプがいつ使用されますか?
C++ STLにはいくつのタイプのイテレータがありますか?今のところ、私はこれらの知っている:イテレータのタイプ:出力vs入力vs.前方アクセスvsランダムアクセス反復子
はもっとありますか?彼らの違いは何ですか?それぞれの限界と特徴は何ですか?どのタイプがいつ使用されますか?
これを整理して非常に便利です。この本は、STLイテレータに関する章全体を含んでいます。この答えは唯一の4つの質問の最初は、これらのタイプについて提起として
Iterator Category Ability Providers
----------------- ------------------------------- ----------------------------
Input iterator Reads forward istream
Output iterator Writes forward ostream, inserter
Forward iterator Reads/writes forward forward_list,
unordered_[multi]set,
unordered_[multi]map
Bidirectional it. Reads/writes forward/backward list, [multi]set, [multi]map
Random access it. Reads/writes with random access vector, deque string, array
C++標準には、逆方向イテレータ(operator--
)も使用できるForward Iteratorという双方向イテレータコンセプトがあります。これらの5つが一緒になって、C++標準の段落24.2のイテレータ階層全体を形成します。
古いSTLには、Trivial Iteratorという概念もありました。さまざまなイテレータに関する詳細は、Iterator overviewを参照してください。
ブースト設計者Abrahams、Siek、Wittは、より細かいイテレータの概念のセットをpresentedとしています。
Downvoted:ここ
は本から少し何かです。 @ zkunovの答えは古いバージョン/追加に関する追加情報が欠けているにもかかわらず、はるかに優れています。 – Jules
@Julesこの回答が受け入れられたのは残念ですが、それを下降させても、答えの中で実際にはそれを低くすることはありません。 –
@Jules OPがstl/stdイテレータについて尋ねたので、イテレータがどのようにして質問に関連するかわかりません。 –
私はあなたがかなりよく答えを知っている疑いがある、しかし、あなたは、「C++標準ライブラリ:チュートリアルとリファレンス」を見つけて読むことができる場合はとにかく、these chartsは
私はそれも疑っています – zkunov
これはC++ 11に関する情報が不足しているので、今は古くなっていますが、afaikにはフォワードイテレータを提供するコンテナが今すぐ存在しています: 'forward_list'、' unordered_set'、 'unordered_multiset '、' unordered_map'と 'unordered_multimap'です。 – Jules
@Julesこれは時代遅れですか? C++ 11では新しいイテレータが導入されていないため、古いイテレータの動作は変更されていないため、かなり正確です。どのコンテナがどのイテレータをサポートしているかは、この質問には関係ありません。 –
質問で具体的に質問されていないかもしれませんが、情報が回答に含まれていたので、情報が変更されたときにコメントすることが適切です。 – Jules