創建嵌套模板的迭代器的一般規則是什麼?例如,你將如何爲以下模板創建一個迭代器:嵌套模板的迭代器
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();