如已知下面的代碼被用於迭代地圖在C++C++迭代地圖
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
{
std::cout << itr->first << " => " << itr->second << '\n';
}
凡ITR被聲明爲的std ::地圖::迭代。成員的第一個和第二個既不在std::map也不在std::iterator中聲明。那麼如何訪問?
如已知下面的代碼被用於迭代地圖在C++C++迭代地圖
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
{
std::cout << itr->first << " => " << itr->second << '\n';
}
凡ITR被聲明爲的std ::地圖::迭代。成員的第一個和第二個既不在std::map也不在std::iterator中聲明。那麼如何訪問?
迭代器背後的基本想法是,它們是用於訪問數據,即表現得像指針「神奇」的對象做一個陣列上 - 即你使用的算術運算符(如++
和--
)移動並取消引用(使用*
和->
)來訪問數據。
所以,itr
是「喜歡」的指針std::pair<char, int>
,這樣就可以通過操作者*
(其產生的鍵/值pair
)或與->
運算符,如在例如訪問數據解引用它。