[英]std map and multimap iterators are the same?
std::multimap<int, int> my_map;
for(int i=0; i<10; ++i)
{
my_map.insert(std::pair<int, int>(i, i));
my_map.insert(std::pair<int, int>(i, i));
}
std::multimap<int, int>::iterator it(my_map.begin());
std::multimap<int, int>::iterator end(my_map.end());
for(; it!=end; ++it)
{
cout << it->first << " " << it->second << endl;
}
std::map<int, int>::iterator it(my_map.begin());
std::map<int, int>::iterator end(my_map.end());
for(; it!=end; ++it)
{
cout << it->first << " " << it->second << endl;
}
為什么在my_map
迭代的兩個循環my_map
產生相同的結果? std :: multimap :: iterator和std :: map :: iterator之間沒有區別嗎?
編譯器上std::multimap
和std::map
的實現很有可能使用相同的迭代器,或偶然兼容的迭代器。 這並不意味着,這種行為得到了保證。 在下一版本的編譯器中可能會更改,更不用說使用其他編譯器了。
迭代器並不相同,但是我認為順序是相同的。 對於multimap
map
或map
,元素按其鍵排序。 順序由其內部比較對象(類型為Compare)指示的特定嚴格弱排序標准確定。
在您的示例中,兩種情況下鍵的順序相同。 我想這就是原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.