我试图利用这样一个事实,即列表的迭代器在插入和删除后仍然有效(除了你刚刚删除的迭代器)。这也是真的吗std::list<T>::end();
假设我尝试以下操作:
typedef std::list<int> list_int;
list_int myList;
list_int::iterator iter = myList.end();
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
if(iter == myList.end()) {
/* do things here */
} else {
/* do different things here */
/* I don't expect this branch to ever execute */
}
这很重要,因为在其他地方我可能会将一组迭代器存储到这个列表中,并且我会通过与myList.end()
. 重要的是,即使在插入和删除之后,无效的迭代器仍然如此。