介绍:
首先我们要明白以下几点:
1.vector数组是一个能存放任意数据类型(类,结构,普通变量类型等)的动态数组!
2.和普通数组一样可以通过下标索引来进行访问!
3.与其它动态序列容器相比(deques, lists and forward_lists), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起lists和forward_lists统一的迭代器和引用更好。
4.vector动态数组可以通过数组名进行直接赋值! vector<yang> c; vector<yang> b; b = c;
5.他的缺点:当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。(比普通的数组具有更高的时间复杂度和空间复杂度)
vector的常规操作:
vector的定义:
#include<vector>//头文件一定要有 using namespace std;//其所在的命名空间 vector<int> vec; //声明一个int型向量
vector<int> vec1(4,1); //vec1的内容为1,1,1,1 vector<int> vec(tmp); //声明并用tmp向量初始化vec向量 int arr[5] = {1, 2, 3, 4, 5}; vector<int> vec(arr, arr + 5); //将arr数组的元素用于初始化vec向量 //说明:当然不包括arr[4]元素,末尾指针都是指结束元素的下一个元素, //这个主要是为了和vec.end()指针统一。 vector<int> vec(&arr[1], &arr[4]); //将arr[1]~arr[4]范围内的元素作为vec的初始值
数组插入元素:
1.vec.push_back(同类型量);作用是在vector的末尾插入新元素;
2.insert()第一个参数为迭代器,作用为在迭代器前面插入新元素;
3.assign(5,1)向vector中加入5个1,同时清除掉以前的元素。
std::vector<int> vec1; vec1.push_back(1); vec1.push_back(2); //vec1元素:1,2 std::vector<int> vec2(vec1); //将vec1赋值给vec2 std::vector<int>::iterator it; it=vec2.begain(); vec2.insert(it,5); //在第一个元素前添加5 it=vec2.begain(); //每当新插入一个元素时内存重新分配所以要重新为迭代器分配指针 vec2.insert(it,2,6); std::vector<int> vec3(vec2); vec3.assign(2,5); //清楚所有元素只留两个5
删除元素:
1.pop_back()删除最后一个元素。
扫描二维码关注公众号,回复:
904325 查看本文章
2.erase()删除指定位置元素。
3.clear()清除所有元素。