底层数据结构:动态开辟的数组,每次以原始空间2倍扩容
vector
vec.insert(iterator,20);在迭代器指定位置插入元素,花费的时间和需要移动的元素个数有关O(N),可能导致容器扩容
删除
vec.pop_back();末尾删除元素 O(1)
vec.erase(iterator);删除迭代器指定的位置的元素, 花费的时间和需要移动的元素个数有关O(N)
查询
operator[] 可以通过数组下标实现随机访问 vec[5] 时间发给O(1);
iterator迭代器进行遍历
find , for_each , foreach=>iterator
注意:对容器进行连续的插入或删除操作,insert/erase,一定要更新迭代器,否则第一次
insert或erase完后,迭代器就失效了.
常用方法介绍
size();返回有效元素个数
empty();是否为空
reserve(20) 给verctor预留空间,只给容器底层开辟指定大小的内存空间,并不会添加新的元素.
resize(20):容器扩容用的,不仅给容器底层开辟指定大小的内存空间,还会添加元素
swap: 两个容器进行元素交换
vector
当我们预先知道元素个数时,可以避免扩容带来效率上的降低