Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 迭代器等价于空指针?_C++_List_Stl_Iterator - Fatal编程技术网

C++ 迭代器等价于空指针?

C++ 迭代器等价于空指针?,c++,list,stl,iterator,C++,List,Stl,Iterator,在我目前正在实现的算法中,我需要操作struct T的std::list。 T持有对T的另一个实例的引用,但该引用也可以是“未分配的”。 起初,我想使用一个指针来保存这个引用,但是使用迭代器可以更容易地从列表中删除 我的问题是:如何用迭代器表示等价于空指针 我知道一般的解决方案是使用myList.end(),但在我的例子中,我需要测试迭代器是否为“null”,并且我可能会在存储迭代器和从列表中删除迭代器之间向列表中添加或删除元素。。。我应该让迭代器指向包含“null”元素的已知列表吗?还是有更优

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

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

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

根据(我强调):

与其他碱基序列相比 容器(vector和deque),列表 是最有效的容器吗 在某些位置插入,而不是 开始或结束 顺序,并且,与这些不同,所有 先前获得的迭代器和 引用在修改后仍然有效 插入并引用相同的内容 他们之前提到的元素。


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

好的,太好了!我有一种感觉,end()将是一个“规则的例外”,它将代表下一个元素,您将把它推回到列表上……不,STL比这更聪明。:)我很好奇:有人知道这是否也在《标准》中吗?@sje397:23.2.2.3.1及以后的版本