创建嵌套模板的迭代器的一般规则是什么?例如,如何为以下模板创建迭代器:
map<int, pair<string, int> > M;
map<map<int, string>, map<string, pair<int, int> > N;
答案 0 :(得分:4)
规则是在容器提供时添加::iterator
。
答案 1 :(得分: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
答案 2 :(得分:2)
只需添加::iterator
map<int, pair<string,int>>::iterator
map<map<int,string>, map<string, pair<int,int>>::iterator
答案 3 :(得分: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();