【发布时间】:2012-08-31 20:48:24
【问题描述】:
我跟踪在地图中插入 137 个元素当我使用 VS2010 调试器检查地图的大小时,我确实得到了 137。使用 printf 我打印地图的所有元素
(it = map.begin();it !=map.end();++it) {
printf ("%x",it->second);
}
因此打印了 137 个值。 之后我的程序继续执行。在执行结束时我需要处理地图的值。
我再次使用调试器检查它有 137 个元素,但是当我像以前一样打印所有这些元素时,我打印了 138 个值,而最后一个是无效值。
我需要了解它是如何/何时发生的,以及是什么导致map.end() 被转移。
【问题讨论】:
-
向我们展示两个“打印”之间的代码
-
你是否在不必要地使用
operator[]? -
是不是类似于
while (map[i++] != NULL)? -
你为什么不调试它并找出这个额外元素来自哪里?
-
我看不出这个问题有什么不同。无论哪种方式,除非您发布一些重现问题的代码,否则没有人可以回答任何一个问题。
标签: c++ visual-studio-2010 map iterator