-5

ネストされたテンプレートの反復子を作成するための一般的なルールは何ですか? たとえば、次のテンプレートの反復子はどのように作成しますか。

map<int, pair<string, int> > M;
map<map<int, string>, map<string, pair<int, int> > N;
4

4 に答える 4

4

::iteratorルールは、コンテナーがそれを提供する場合に追加しています。

于 2013-03-22T22:54:36.687 に答える
2

あらゆる種類のコンテナへのイテレータのように:

map<int, pair<string,int>>::iterator it1; // or const_iterator
map<map<int,string>, map<string, pair<int,int>>::iterator it2; // or const_iterator
于 2013-03-22T22:54:44.220 に答える
2

追加するだけ::iterator

map<int, pair<string,int>>::iterator
map<map<int,string>, map<string, pair<int,int>>::iterator
于 2013-03-22T22:54:54.773 に答える
2

標準 C++ コンテナーは、参照可能な型エイリアス と呼ばれるiteratorものを定義const_iteratorします。

たとえば、タイプが次の場合:

map<int, pair<string,int>>

次に、次のようにして、イテレータの型をその要素に取得できます。

map<int, pair<string,int>>::iterator
//                        ^^^^^^^^^^

または、定数イテレータが必要な場合:

map<int, pair<string,int>>::const_iterator
//                        ^^^^^^^^^^^^^^^^

ただし、C++11 では、多くの場合、これを行う必要はありませんauto。コンパイラに反復子の型を推測させることができるためです。

map<int, pair<string,int>> m;
// Fill in the map...
auto i = m.begin();

上記のスニペットの最後の行は、次と同等です。

map<int, pair<string,int>>::iterator i = m.begin();
于 2013-03-22T22:55:01.893 に答える