说到数组,大伙肯定都不陌生,在C语言中还用的蛮多的,但是使用的场景却是有限的。当我们要用到数组却不知道要存放多少个元素时,普通的数组就有点无能为力了,所以vector就是来解决这一问题的,不仅如此,vector库里面还有很多的函数和模板,我们可以很方便的去使用。
首先,如果我们要使用vector,就必须加上下面这两个
#include<vector> using namespace std;
现在我们来构造一个动态数组:
C++中直接构造一个vector的语句为:vector<T> vec。这样我们就定义了一个名为vec的存储T类型数据的动态数组,其中T时我们要存储的数据类型,可以是int、float、double、或者其他自定义的数据类型,初始化的时候vec是空的。比如vector<int> a; 定义了一个存储整数的动态数组a
插入元素:
C++中通过pus_back()的方法在数组最后面插入一个新的元素
#include <vector> using namespace std; int main() { vector<int> vec; //[] vec.push_back(1); //[1] vec.push_back(2); //[1,2] vec.push_back(3); //[1,2,3] return 0; }
如果想要知道vector的长度,可以用vec.size()获取
#include<iostream> #include <vector> using namespace std; int main() { vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec[1] = 2; //可以像普通数组一样修改一个元素 for(int i = 0 ; i < vec.size() ; ++i) cout<<v[i]<<endl; //要访问和普通的数组一样用中括号 return 0; }
删除元素:使用vec.pop_back() ,会删除最后面的一个元素
清空vector:可以调用clear() ,但是clear只会清空vector,但是开辟的内存还在,可以使用一种方法清空vector的内存
//vector<int> v; vector<int>().swap(v); //开一个空的vector和v交换就行了
vector构造函数
当我们需要构造一个数组时,第一肯定想到的就是循环,比如我们如果想构造一个长度为n,并且全部是1的数组时:
int n = 10; vector<int> vec; for(int i = 0 ; i < n ; ++i) vec.push_back(1);
但其实,我们还有更加方便的方法来构建一个动态的数组,如:
int n = 10; vector<int> vec(n,1); //快速完成构建,第一个参数表示构造的个数,第二个参数表示初始的值,如果不传任何参数,默认为0
二维vector
我们知道,有二维数组这种东西,那二维vector怎么开呢,其实我们只需要在定义时这样声明就好了vector<vector<int> > vec2,注意在<int> > 里面是有空格的,否则在一些老版本上的编译器就会编译出错
int n = 5; vector<vector<int> > vec2; for(int i = 0; i < n ; ++i) { vector<int> x(i+1,i); vec2.push_back(x); } for(int i = 0 ; i < n ; ++i) { for(int j = 0 ; j < vec2[i].size() ; ++i) cout<<vec2[i][j]<<" "; cout<<endl; }
vector超过二维之后使用就会特别麻烦,所以一般都只开到二维
在竞赛里面差不多掌握这么多就够了,剩下的就可以去刷题然后熟练使用
Comments NOTHING