簡體   English   中英

std map和multimap迭代器是一樣的嗎?

[英]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::multimapstd::map的實現很有可能使用相同的迭代器,或偶然兼容的迭代器。 並不意味着,這種行為得到了保證。 在下一版本的編譯器中可能會更改,更不用說使用其他編譯器了。

迭代器並不相同,但是我認為順序是相同的。 對於multimap mapmap ,元素按其鍵排序。 順序由其內部比較對象(類型為Compare)指示的特定嚴格弱排序標准確定。

在您的示例中,兩種情況下鍵的順序相同。 我想這就是原因。

暫無
暫無

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

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