没有.
将某些内容推入迭代器后std::vector,end()迭代器始终无效.
所有其他迭代器都是有效的,除非
新容器的大小大于以前的容量
但是有些容器的迭代器在推送后不会失效.请参阅此问题的优秀答案.
如果要在推送新元素时使用迭代器记住向量中的位置,可以确保新大小不大于使用该成员的旧容量.reserve()
std::vector<int> numbers = {1,2,3};
numbers.reserve(4);
int capacity = numbers.capacity(); // capacity >= 4
std::vector<int>::iterator pos = numbers.begin() + 2 // any iterator before
// the point of insertion
numbers.push_back(4); // new size is 4, old capacity is >= 4,
// therefore pos is still valid.
Run Code Online (Sandbox Code Playgroud)