变长数组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