C++ STL之vector
1.介绍
vector充当动态数组,其中很多的方法函数为解题时提供了很多便利。
头文件
#include<vector>
当然也可以使用c++的万能头文件
#include<bits/stdc++.h>
一维vector的初始化
vector<int> v;//定义了一个int类型的动态数组
vector<double> v;//定义了一个double类型的动态数组
vector<int> v(n);//定义了一个长度为n的数组,默认都为0
vector<int> v(n,1);//这里将数组里面的所有元素都初始化为1
vector<node> v;//(常用)这里定义了一个结构体类型的数组
//在代码的前面还需要写一个node的结构体
vector<int> v{1,2,3};//这里的初始化每个值不同
二维vector的初始化
vector<int> v[5];//特别要注意的一点是,当括号为()时,定义的是一个一维数组
//而[]则为二维数组。定义的这个数组行是不可变的为5,但是列是可以变化的
//即第一维固定为5,第二维长度可变
//长度为5的数组v,每一个存储的都是vector<int>类型,以下为操作
v[1].push_back(3);
v[2].push_back(27);
//以下再写一个二维均可变化的
vector<vector<int> > v;//可以在v数组中装入多个数组
2.函数
代码 | 解释 |
---|---|
v.front() | 返回第一个数据 |
v.back() | 返回最后一个数据 |
v.pop_back() | 删除了最后一个数据 |
v.push_back(val) | 在尾部加入一个数据 |
v.size() | 返回数据的个数 |
v.clear() | 清除元素 |
v.empty() | 判断是否为空 |
v.resize(n,v) | 改变数组大小 |
v.begin()、v.end() | 表示返回第一个或者最后一个元素的后一个地址 |
v.insert(v.begin()+3,27) | 在v[3]的位置插入27 |
访问方式
访问方式有很多,这里介绍两种基本的。
1.下标访问
for(int i=0;i<3;i++){
v.push_back(i);
}
for(int i=0;i<3;i++){
cout<<v[i]<<" ";
}
2.迭代器访问
//首先要声明一个迭代器类型的变量it
vector v{1,2,3};
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++){
cout<<*it<<" ";
}
以上是vector的一些常见用法,还有一些具体的解释不是很到位,以其其他函数我没有枚举,可以看其他博客继续学习,欢迎批评与指正!