vector是C++标准库中的一个类,与数组颇为相似,不同之处在于,vector可以自动扩展容量,故可以将其视为会自动扩展容量的数组。vector是C++标准程序库中的众多容器(container)之一,能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型数据的动态数组。
为了可以使用vector,需要在你的头文件中包含下面的代码:
#include <vector>
using namespace std;
以下着重介绍vector的常见用法:
1) 创建一个vector,有多种方法。
vector< 类型 > 标识符 ; //如vector< int> Vint ; vector< 类型 > 标识符(最大容量) ; // 如vector< int> Vint(100)创建包含100个int数据的vector ; vector< 类型 > 标识符(最大容量,初始所有值); // 如vector< int> Vint(100,int(10))极为创建包含100个int数据(均初始化为10)的vector ; vector< 类型 > 标识符(该类型vector对象); // 如vector< int> Vint2(Vint)创建了一个Vint的拷贝
2) 利用数组初始化vector
int i[10] ={0,1,2,3,4,5,6,7,8,9} ; vector<int> v(i+1,i+9);//使用数组对C++ Vector进行初始化
其中i+1,i+9表示从数组的第一个值到第九个值之前的值,即i[1]到i[8]
3) vector二维对象定义,相当于二维数据。
vector< int > v(100,int(9));//创建包含100个int数据的vector vector< vector<int> > v2;//二维容器 for(int i =0;i<10;i++) { v2.push_back(v); }
4) 元素访问方法
7) 重新配置/重设长度
8) 迭代 (Iterator)
9) vector排序
vector< int > v ; v.push_back(11); v.push_back(7); v.push_back(15); sort(v.begin() , v.end()); // 从小到大 reverse(v.begin(),v.end()) // 从大到小
vector < int > v ; for( int i = 0 ; i < 10 ; i ++ ) { vector.push_back(i); } vector < int >::interator itr = find(v.begin() , v.end(), 7) ; //find方法需引入#include<algorithm>> cout << *itr << endl ; ///返回容器内找到值的位置。
for(int i = 0 ; i < 10 ; i ++) // 第一种方法 cout <<v[i] <<" " ; cout<<endl; vector<int>::iterator itr; for(itr = v.begin();itr!= v.end();itr++)//第二种方法 cout<<*itr<<" "; cout<<endl;
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main(int argc,char* argv[]) { int i[11] ={0,1,2,3,4,5,6,7,8,9,10} ; vector<int> v(i,i+10);//使用数组对vector进行初始化 //vector< int > v(100,int(9));//创建包含100个int数据的vector ; //vector< int > v ; // for(int i = 0; i < 10; i++ )//插入项方式初始化 // v.push_back( i ); vector<vector<int>> v2;//二维容器 for(int i =0;i<10;i++) { v2.push_back(v); } cout<<"方法一输出:"<<endl; for(int i = 0 ; i < 10 ; i ++) // 第一种方法 cout <<v[i] <<" " ; cout<<endl; cout<<"方法二输出:"<<endl; vector<int>::iterator itr; for(itr = v.begin();itr!= v.end();itr++)//第二种方法 cout<<*itr<<" "; cout<<endl; vector<int>::iterator itr2 = find(v.begin(),v.end(),7);//查找 cout<<"数据7的位置"<< *itr2<<endl; system("pause"); return 0; }