簡體   English   中英

C ++迭代映射

[英]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中聲明 那怎么可以訪問?

std::map的元素是std::pair<key_type, mapped_type> ,因此取消引用map迭代器會為您提供對其中一個的引用。

它是std::pair類模板,它有firstsecond成員。

迭代器背后的基本思想是它們是用於訪問數據的“神奇”對象,其行為類似於數組上的指針 - 即您使用算術運算符(例如++-- )來移動並取消引用(使用*-> )訪問數據。

因此, itr “喜歡”指向std::pair<char, int>的指針,因此您可以通過*運算符(產生鍵/值pair )或使用->運算符訪問解除引用它的數據,如在你的例子中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM