C++ - SLT - vector 整理笔记
一 基本概念
向量(vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。vector<T> 容器的大小可以自动增长,从而可以包含任意数量的元素;因此类型参数 T 不再需要模板参数 N。(类似的如:array<N,T>)只要元素个数超出 vector 当前容量,就会自动分配更多的空间。只能在容器尾部高效地删除或添加元素。可以简单的认为,向量是一个能够存放任意类型的动态数组。
二 头文件
#include<vector>
三 创建一个vector类型的容器
vector<类型名> 向量名
(1)vector<int> vv; //定义一个int型的向量vv
(2)vector<int> vv(5); //定义一个容量大小为5的向量vv
(3)vector<int> vv(5,8); //定义一个容量大小为5的向量vv,且初始值都为8的向量
(4)vector<int> b(a); //声明并用向量a初始化向量b
(5)vector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个元素到第2个(共3个)元素作为向量b的初始值
(6)用数组来初始化向量
int n[] = {1, 2, 3, 4, 5} ;
vector<int> a(n, n+5) ; //将数组n的前5个元素作为向量a的初值
vector<int> a(&n[1], &n[4]) ; //将n[1] - n[4]范围内的元素作为向量a的初值
四 常用函数
(1)push_back() 在序列的末尾添加一个元素
1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 int main() 5 { 6 vector<int> a; 7 a.push_back(2); //将元素2添加进a 8 cout<<a[0]<<endl; 9 return 0; 10 }
输出:2
(2)pop_back() 去掉数组的最后一个数据
#include<iostream> #include<vector> using namespace std; int main() { vector<int> a; a.push_back(1); a.push_back(2); a.pop_back(); for(int i=0;i<a.size();i++) //将最后一个元素2删掉 cout<<a[i]<<endl; return 0; }
输出:1
(3)insert() 插入一个元素
1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 int main() 5 { 6 vector<int> vv; 7 for(int i = 0;i < 6; i++) 8 { 9 vv.push_back(i); //此时为 0 1 2 3 4 5 10 } 11 vv.insert(vv.begin() + 2, -1); 12 int num=vv.size(); 13 int i=0; 14 while(i<num-1) 15 { 16 cout<<vv[i]<<" "; 17 i++; 18 } 19 cout<<vv[6]<<endl; 20 return 0; 21 }
输出:0 1 -1 2 3 4 5
(4)clear() 用来清空vector中所有元素
#include<iostream> #include<vector> using namespace std; int main() { vector<int> vv; for(int i=1; i<=3; i++) { vv.push_back(i); //将1,2,3依次插入vi末尾 } cout<<"清除前:"; for(int i = 0;i < vv.size();i++) { cout<<vv[i]<<" "; } cout<<endl; vv.clear(); cout<<"清除后:" ; for(int i = 0;i < vv.size();i++) { cout<<vv[i]<<" "; } return 0; }
输出:
清除前:1 2 3
清除后: