vector
- 1、插入(push_back)元素。end操作返回的迭代器失效
- 2、插入(push_back)元素,若发生扩容,即capacity返回值有变化,则需重新加载整个容器,此时begin和end操作返回的迭代器都会失效。
- 3、删除(erase、pop_back)元素,指向删除点的迭代器失效,后面的元素的迭代器也将失效。
qeque
- 1、在deque容器首部和尾部插入元素不会使任何迭代器失效;
- 2、在deque容器首部和尾部删除元素,只会使被删除元素的迭代器失效;
- 3、在deque容器的其他位置删除或插入元素,该容器的所有迭代器都将失效;
list/set/map
- 1、删除元素时,删除该节点的迭代器会失效;
- 2、插入元素时,不是使迭代器失效;
当前迭代器失效时可用返回值,erase函数有返回值,返回下一个迭代器:iter =cont.erase(iter);
迭代器与指针
- 1、迭代器不是指针,是类模板,通过重载->、++、–等指针的操作符封装指针,模拟指针的操作,表现的像指针;
- 2、迭代器返回的是对象的引用;
- 4、指针可以指向函数,迭代器不行,迭代器只能指向容器,指针能指向一些特殊的容器;
- 2、指针是存放地址的变量;是一种特殊的迭代器;