vczh的日常 2018-03-19
首先和string一样要在开头
#include <vector> #include <string>
和string一样,也算是一种容器,而且同属于STL(standard template library)里的好基友
1.初始化向量
vector<int> a ; //声明一个int型向量a vector<int> a() ; //声明一个初始大小为10的向量 vector<int> a(, ) ; //声明一个初始大小为10且初始值都为1的向量 vector<int> b(a) ; //声明并用向量a初始化向量b vector<int> b(a.begin(), a.begin()+) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值
也可以用数组来初始化向量
int n[] = {, , , , } ; vector<int> a(n, n+) ; //将数组n的前5个元素作为向量a的初值 vector<int> a(&n[], &n[]) ; //将n[1] - n[4]范围内的元素作为向量a的初值
2.向量元素的输出和访问
普通的
1 #include<iostream> 2 #include<vector> 3 4 using namespace std ; 5 6 int main() 7 { 8 vector<int> a(10, 0) ; //大小为10初值为0的向量a 9 10 //对其中部分元素进行输入 11 cin >>a[2] ; 12 cin >>a[5] ; 13 cin >>a[6] ; 14 15 //全部输出 16 int i ; 17 for(i=0; i<a.size(); i++) 18 cout<<a[i]<<" " ; 19 20 return 0 ; 21 }
在输出上,还可以使用迭代器,类似城管一样,一个一个不漏地弄出来vector里面的元素
比如在这种申明形式下
vector <int> a(b.begin(),b.begin()+);
中,可以使用城管iterator
//全部输出 vector<int>::iterator t ; for(t=a.begin(); t!=a.end(); t++) cout<<*t<<" " ;
3.向量的基本操作
1>. a.size() //获取向量中的元素个数 2>. a.empty() //判断向量是否为空 3>. a.clear() //清空向量中的元素 4>. 复制 a = b ; //将b向量复制到a向量中 5>. 比较 保持 ==、!=、>、>=、<、<= 的惯有含义 ; 如: a == b ; //a向量与b向量比较, 相等则返回1 6>. 插入 - insert ①、 a.insert(a.begin(), 1000); //将1000插入到向量a的起始位置前 ②、 a.insert(a.begin(), 3, 1000) ; //将1000分别插入到向量元素位置的0-2处(共3个元素) ③、 vector<int> a(5, 1) ; vector<int> b(10) ; b.insert(b.begin(), a.begin(), a.end()) ; //将a.begin(), a.end()之间的全部元素插入到b.begin()前 7>. 删除 - erase ①、 b.erase(b.begin()) ; //将起始位置的元素删除 ②、 b.erase(b.begin(), b.begin()+3) ; //将(b.begin(), b.begin()+3)之间的元素删除 8>. 交换 - swap b.swap(a) ; //a向量与b向量进行交换
4.二维向量
vector< vector<int> > b(, vector<int>()); //创建一个10*5的int型二维向量
输入输出的方式
8 vector< vector<int> > b(10, vector<int>(5, 0)) ; 9 10 //对部分数据进行输入 11 cin>>b[1][1] ; 12 cin>>b[2][2] ; 13 cin>>b[3][3]; 14 15 //全部输出 16 int m, n ; 17 for(m=0; m<b.size(); m++) //b.size()获取行向量的大小 18 { 19 for(n=0; n<b[m].size(); n++) //获取向量中具体每个向量的大小 20 cout<<b[m][n]<<" " ; 21 cout<<"\n" ; 22 } 23