创建嵌套模板的迭代器的一般规则是什么?例如,你将如何为以下模板创建一个迭代器:嵌套模板的迭代器
map<int, pair<string, int> > M;
map<map<int, string>, map<string, pair<int, int> > N;
创建嵌套模板的迭代器的一般规则是什么?例如,你将如何为以下模板创建一个迭代器:嵌套模板的迭代器
map<int, pair<string, int> > M;
map<map<int, string>, map<string, pair<int, int> > N;
的规则增加了::iterator
如果容器提供它。
就像迭代任何类型的容器:
map<int, pair<string,int>>::iterator it1; // or const_iterator
map<map<int,string>, map<string, pair<int,int>>::iterator it2; // or const_iterator
只需添加::iterator
map<int, pair<string,int>>::iterator
map<map<int,string>, map<string, pair<int,int>>::iterator
标准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
一llows你让编译器推断迭代器的类型:
map<int, pair<string,int>> m;
// Fill in the map...
auto i = m.begin();
上面代码片段的最后一行是等价于:
map<int, pair<string,int>>::iterator i = m.begin();