Vector 是C++ STL中的一个常用的数据结构。作为一个动态数组的容器,其典型的内部实现在内部拥有一个动态分配的数组,并有size 和capacity两个成员变量。size用来指示实际存储的element数量,capacity用来指示内部分配的数组大小。
当插入element的时候,如果size大小超过了capacity,就需要重新分配内存,来容纳新的element.这样已经存在的element就需要重新拷贝到新的内存区域中;因为element的地址在重分配的过程中已经发生变化,所以任何对该element的引用(reference)和迭代器(iterator)都将无效,如果使用这些无效的引用和迭代器,将会发生无定义的行为。