在C++中使用Set Iterator

Ale*_*319 3 c++ iterator set dereference

当我尝试在C++中以调试模式使用set迭代器时,我收到一个错误,上面写着"map/set iterator not dereferencable".我不明白,因为我认为dereferincing是你应该如何使用迭代器.代码如下所示:

set<int>::iterator myIterator;
for(myIterator = mySet.begin();
    myIterator != mySet.end();
    myIterator++)
    DoSomething(*myIterator)
Run Code Online (Sandbox Code Playgroud)

这是我在网上看到的关于如何使用迭代器的所有示例的格式.我究竟做错了什么?

sho*_*osh 7

如果DoSomething()更改set - 删除或插入项,则您保持的迭代器将失效,这可能会导致此错误.

  • 只是略微正确:只有当它引用的项目从集合中移除时,`std :: set`迭代器才会失效:您可以插入任何项目,并删除除一个项目之外的任何项目.见23.1.2/8. (2认同)