迭代器相当于空指针?

Mik*_*age 13 c++ iterator stl list

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

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

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

sus*_*att 17

根据这个(由我强调):

与其他基本序列容器(vector和deque)相比,list是在序列的开头或结尾之外的某个位置进行插入的最有效容器,并且与这些不同,所有先前获得的迭代器和引用仍然存在插入后有效,并参考之前提到的相同元素.

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