迭代器相当于空指针?

时间:2010-12-11 23:15:47

标签: c++ list stl iterator

在我正在实现的算法中,我需要操作struct T的std :: list。 T保存对T的另一个实例的引用,但此引用也可以是“未分配的”。 起初,我想使用一个指针来保存这个引用,但是使用迭代器可以更容易地从列表中删除。

我的问题是:如何用迭代器表示等效于空指针?

我读的一般解决方案是使用myList.end(),但在我的情况下,我需要测试迭代器是否为“null”,我可能会在列表之间添加或删除元素存储迭代器和我从列表中删除它的那一刻......我应该让迭代器指向包含“null”元素的已知列表吗?还是有更优雅的解决方案?

1 个答案:

答案 0 :(得分:17)

根据this(我强调):

  

与其他碱基序列相比   容器(矢量和双端队列),列表   是最有效的容器   插入除了以外的某个位置   的开头或结尾   顺序,并且,与这些不同,全部   以前获得的迭代器和   参考后仍然有效   插入并参考相同的内容   他们之前提到的要素。

这同样适用于擦除(明显的例外是迭代器引用已删除的元素变为无效)。所以,是的,获取end()将始终指向相同的“无效”元素,并且应该可以安全使用。