【发布时间】:2010-12-26 14:30:54
【问题描述】:
当我尝试在 C++ 的调试模式下使用 set 迭代器时,我收到一条错误消息,提示“map/set iterator not dereferencable”。我不明白,因为我认为取消引用是你应该如何使用迭代器。代码如下所示:
set<int>::iterator myIterator;
for(myIterator = mySet.begin();
myIterator != mySet.end();
myIterator++)
DoSomething(*myIterator)
这是我在网上看到的关于如何使用迭代器的所有示例的格式。我做错了什么?
【问题讨论】:
-
DoSomething 声明为什么?
-
这个例子看起来似乎是正确的(除非缺少
;)。您需要发布更完整的内容,以实际展示您遇到的问题。例如,mySet是如何填充的? -
是编译时错误还是运行时错误?
-
虽然在这种情况下可能没有什么不同,但您可能会获得更好的性能:
++myIterator。后缀运算符需要制作迭代器的副本。 -
不是显示代码“看起来像”,而是向我们展示代码实际上是什么。此外,最好在迭代器上使用预增量而不是后增量,因为后增量需要创建一个无意义的临时变量。
标签: c++ iterator set dereference