因为我知道程序中的迭代器可能会因某些先前的操作而失效,所以我想明确地使它无效。比如给指针赋值NULL使它无效,我只想在迭代器上做同样的事情。 container.end()
在这里不是一个确切的想法。我试图为我的迭代器分配NULL,但它失败了。如何在迭代器上获得NULL指针的相同行为?
答案 0 :(得分:4)
某些先前的操作可能会使失效,我想明确地使它无效
...如果您知道它可能无效,那么您只需要停止使用。使迭代器无效显式无效,因为无论如何使用它都是编程错误。
答案 1 :(得分:2)
为什么不想使用container.end()
?...它适用于大多数容器...
对于std :: string您可能需要检查位置是yourstring.npos
;
答案 2 :(得分:1)
总的来说,你不能。有一些迭代器根本无法失效。例如,可以将随机数生成器建模为输出迭代器,operator*
返回当前数字,operator++
生成新数据。
答案 3 :(得分:1)
这不应该一直有效吗? (迭代器总是可赋值且可默认构造)
template <typename Iter>
void foo(Iter it){
it = Iter(); // invalidate
}