-1

可能重复:
发现元素何时插入到 std::map

我跟踪在地图中插入 137 个元素当我使用 VS2010 调试器检查地图的大小时,我确实得到了 137。使用 printf 我打印地图的所有元素

(it = map.begin();it !=map.end();++it) {
   printf ("%x",it->second);
}

结果打印了 137 个值。之后我的程序继续执行。在执行结束时,我需要处理地图的值。

我再次使用调试器检查它有 137 个元素,但是当我像以前一样打印所有元素时,我打印了 138 个值,而最后一个是无效值。

我需要了解它是如何/何时发生的,以及是什么导致map.end()了转移。

4

1 回答 1

0

没有代码很难说。我们可以猜测。我建议您重写添加到地图的运算符,并在每次添加后检查地图的大小。当大小大于 137 时,会导致您的程序使用 GPF(或调用将导致调试器中断的函数。)在调试器中运行您的程序,然后宾果游戏,堆栈跟踪会告诉您问题出在哪里。

于 2012-08-31T21:03:52.840 回答