[英]C++ iterating map
眾所周知,以下代碼用於在C ++中迭代map
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
{
std::cout << itr->first << " => " << itr->second << '\n';
}
其中itr聲明為std :: map :: iterator 。 第一個和第二個成員既不在std :: map中也不在std :: iterator中聲明 。 那怎么可以訪問?
迭代器背后的基本思想是它們是用於訪問數據的“神奇”對象,其行為類似於數組上的指針 - 即您使用算術運算符(例如++
和--
)來移動並取消引用(使用*
和->
)訪問數據。
因此, itr
“喜歡”指向std::pair<char, int>
的指針,因此您可以通過*
運算符(產生鍵/值pair
)或使用->
運算符訪問解除引用它的數據,如在你的例子中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.