【发布时间】:2011-06-16 03:48:52
【问题描述】:
我已阅读 C++ 列表迭代器的文档,但无法弄清楚一件事:C++ 迭代器“安全”吗?我的意思是,一旦到达列表中的最后一个现有元素,它会停止递增吗?
[]的
【问题讨论】:
-
@Karmastan - 不幸的是,在 C++ 中,这种实验没有什么价值。
-
@David Heffernan - 这样的迭代器在 C++ 中很常见。理由是性能。
-
不安全的迭代器应该促使你直接放弃使用它们,而改用算法,让算法担心何时停止递增。
-
@JerryCoffin 这并不总是足够的。例如,如果您有一个迭代器
iter指向std::list<T> l,并且您调用l.erase(iter),那么您必须确保不再使用iter。函数调用后iter无效。