vector的介绍和使用
vector的基本概念
vector是一个可变数组大小的序列容器,可以看作一个数组。所以他也是连续存储数据的,就是意味着他可以通过下标的方式来访问和修改数据。他也具备数组的优点,能够高效的随机访问和修改。但是,他在插入、删除数据的效率上就很低下。
当有新数据插入到容器中时,数组会重新分配大小,意味着他要会重新开辟一个新大小的数组,并将原来的数据拷贝到新数组中。这也是导致后面迭代器失效的主要原因。
当一个vector容器创建时,编译器往往会开辟比所需空间稍大一点的空间,当容量不够时,vector会按照一定规则开辟新大小的空间。为了更好管理这些空间,vvector的空间是动态增长的。
vector的基本用法
一、构造方式:
二、空间管理:
1.empty(); //判断容器是否为空
2.capacity(); //返回容器的容量
3.size(); //返回容器的大小,即容器中元素的个数
4.resize(int num); //重新指定容器的长度为num,若容器变大,则以默认值0填充新位置,如果容器变短,则末尾超过容器长度的元素被删除
5.resize(int num,int elem); //重新指定容器的长度为num,若容器变长,则以elem填充新位置,如果容器变短,则末尾超过容器长度的元素被删除6.reserve(int x)://指定容器新的的大小,可以提前开好空间,省去容器变大时,扩容所需的时间
三、迭代器
正向:
begin();//指向容器的开始
end();//指向容器的最后
反向:
rbegin();//相当于end()
rend();//相当于begin()
我们可以通过这两个区间去遍历数据内容
四、容器的操作
1.push_back(ele); //尾部插入元素ele
2.pop_back(); //删除最后一个元素
3.insert(const_iterator pos,ele); //在迭代器指向的位置pos处插入一个元素ele
4.insert(const_iterator pos,int count,ele); //在迭代器指向的位置pos处插入count个元素ele
5.erase(const_iterator pos); //删除迭代器指向的元素
6.erase(const_iterator begin,const_iterator end); //删除迭代器从begin到end之间的元素
7.clear(); //删除容器中所有元素8.back()://获取尾部的数据
9.front();//获取头部的数据
10.operator[];//可以通过下标访问数据
基本使用就这些了,大家一起学习进步!