变长数组vector
vector译为向量,一般来说也叫变长数组,也就是长度可以任意变化的数组,有些题目需要开很多数组,往往造成内存超限,使用vector简单方便,还可节省空间。
头文件
vector
的头文件是using namespace std;
如何定义
定义格式为vector<type_name> name;
其中的type_name可以是数据类型,像int
,double
,char
,string
或者是vector
本身这样的
例:
vector<int> a; //定义了一个整型不定长数组a
vector<double> a; //定义了一个双精度浮点型不定长数组score
vector<node> a; //定义了一个结构体类型的不定长数组stu
注意事项
如果type_name
也是一个vector
的容器,那么定义时需要在两个>
符号之间加一个空格,不然编译器会误认为是位运算的右移符号>>
,例如:
vector<vector<int> > a; //定义了一个两个维度都可变的二维整型数组a,两个“>”间有一个空格
如何访问
访问vector中的元素一般使用下标访问
下标访问:对于vector<type_name>a,可以用a[i]来访问,其中,0≤i≤a.size() – 1,a.size()表示vector中元素的个数。
可变长数组常用函数
当然啦,C++的设计者也十分的良心,为我们设计了许多好用的函数,常用函数如下
插入
push_back();
解释:将括号里的值压入变量的最后,时间复杂度是O(1).
举个例子:
vector<int>a;
int x;
cin>>x;
a.push_back(x);
在变长数组赋值前,是不能使用下标来赋值的,只能一位一位的压入,不能a[0]=x
这样赋值。
取元素个数
size();
解释:如果是一维数组,size()用来获得vector中元素个数;如果是二维数组,size()用来获得vector中第二维的元素个数,时间复杂度为O(1)。
删除
pop_back()
解释:用来删除vector中的尾元素。时间复杂度为O(1)
清空
clear()
解释:用来清空vector中的所有元素。时间复杂度为O(n)
插入
insert()
解释:insert(it, x)
用来向vector任意迭代器it处插入元素x。时间复杂度为O(n)。
还有一种写法,但是不常见,是insert(it ,x,y)
,并不是插入x和y而是插入x个y。
删除指定元素
erase()
解释:erase()
用来删除vector
中的元素,有两种用法,一是erase(it)
,删除迭代器it处的单个元素;二是erase(first, last)
,删除左开右闭区间[first, last) 内的所有元素。
关于vector
这次就讲到这里,如果你觉得以上内容对你有帮助的话,被忘了点个赞再走啊 QAQ