vector是C++STL中的一种容器,是一种向量类型,可以容纳许多类型的数据,因此被称为容器。(可以理解为动态数组,vector
的大小可以根据需要自动增长和缩小,是封装好了的类)
下面我们来看看vector的使用
1.首先是使用vector前需要的头文件
#incldue<vector>
2.vector的定义:vector<储存的类型>容器名
e.g. 储存int型的值 vector<int>v;//v是容器名(变量名)
储存double型的值 vector<double>v;
储存string型的值 vector<string>v;
储存结构体或者类的值的值 vector<结构体名>v;
当然了,也可以在定义的同时指定初始大小和初始值(注意哈,在变量名后面的括号是小括号)
e.g. vector<int>v(7);//创建一个包含7个整数的vector,每个值都是默认为0的哈;
vector<int>v(7,14);//创建一个包含7个整数的vector,每个值都是14;
也可以初始化包含元素vector<int>v={1,2,3,4};//这里是{}。
3.接下里来解释一下为什么指定初始大小和初始值要用()而不是[ ]
vector<int>v(n);//上面已经讲过用途了
vector<int>v[n];可以理解成为二维数组,定义了一个长度为n的数组,数组的每个元素都是vector类型的变量(这个v[n]可以理解为一维长度是你,这个n需要是已知参数,才算一维长度不变,二维长度可变的矩阵)
vector还有另一种方式表示二维数组vector<vector<int>>v;
(我后面补充了一篇关于vectcr的两种二维数组的理解和表示,可以更好的理解)
4.vector的使用
(1).使用size()返回元素个数
int a=v.size();//获取vector中的元素数量
(2).push_back( ) / pop_back( )
push_back( ) 向vector的末尾添加一个元素
e.g. vector<int>v;
v.push_back(4);
v.push_back(7);
相当于a[0]=4,a[1]=7;
此时,在使用之后才可以默认这是一个变量名为v的数组,v[x]有效,既开辟大小之后才可以使用v[x],如果给vector<int>v(10)初始化,这里初始化为0,v[x]也有效
pop_back( )相当于删除最后一个元素
(3)empty( )返回是否为空
vector<int>v;
cout<<v.empty()<<endl;//输出1
v.push_back(7);
v.push_back(8);
cout<<v.empty()<<endl;//输出0
(4)clear( )清空
vector<int>v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
cout<<v.size()<<endl;//输出3
v.clear();
cout<<v.size()<<endl;//输出0
注意事项clear()是清空了v里的元素,但不会改变vector的容量并不会清空他所占的内存
但是使用swap()函数可以将vector与一个空的vector进行交换,从而删除vector中的所有元素并释放vector所占用的空间内存,这样做可以最小化vector的容量
(5)front()/back()/begin()/end()
v.front()/v.begin();//返回v的第一个元素
v.back()/v.end();//返回v的最后一个元素