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
的两个循环产生相同的结果? std :: multimap :: iterator和std :: map :: iterator之间没有区别吗?
答案 0 :(得分:0)
很可能你的编译器上的std::multimap
和std::map
的实现使用相同的迭代器,或者意外兼容的东西。那不意味着这种行为是有保证的。它可能会在下一版本的编译器中发生变化,更不用说使用其他编译器了。
答案 1 :(得分:0)
迭代器不一样,但我认为顺序是一样的。对于multimap
或map
,元素按其键排序。该顺序由其内部比较对象(类型比较)指示的特定严格弱排序标准确定。
在您的示例中,两种情况下密钥的顺序相同。我猜这就是原因。