-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 回答