【发布时间】:2017-04-15 10:33:29
【问题描述】:
C++ 参考明确指出,在迭代器上调用std::vector::erase(it) 将使所有指向和之后的迭代器失效已擦除元素。 http://en.cppreference.com/w/cpp/container/vector/erase
我确实理解为什么这样的迭代器在erase 调用之后变得不可取消引用,但我很好奇为什么它们需要变得无效,哪些实现细节需要它?
例如,标准规定 std::vector 必须使用连续存储的元素来实现,而 elements can be accessed not only through iterators, but also using offsets on regular pointers to elements 因此这样的容器的迭代器可能会被实现为指针似乎是合乎逻辑的 - 但是指针如何变得无效?
【问题讨论】:
标签: c++ c++11 vector stl iterator