【发布时间】:2013-09-24 02:32:53
【问题描述】:
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 没有区别吗?
【问题讨论】:
-
您的代码有错误(迭代器类型和容器类型不匹配)。修复错误,谜团就会消失。理解错误代码的行为非常非常困难。
-
@DavidSchwartz 代码编译并运行良好。我想知道为什么会这样。
-
它有一个错误。它不会像您期望的那样运行。这就是虫子的本质。修复错误,谜团就会消失。这就是程序员尽力避免错误的原因。