什么是vector. 一个封装良好的变长数组,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。
vector的使用样例:
1.需要#include <vector>
2.使用std声明std::vector
3.使用vector<Type> vec() 声明vector的容量大小(声明3个单位的容量,vec(3),执行vec[4] = 3,报错,越界错误)
创建vector对象,vector<int> vec;
4.尾部插入数字:vec.push_back(a);
5.使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
6.使用迭代器访问元素.
vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
7.插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
8.删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
9.向量大小:vec.size();
10.清空:vec.clear();
执行:
1 #include <iostream> 2 #include <vector> 3 #include <string> 4 5 using namespace std; 6 7 const int NUM = 5; 8 9 int main() 10 { 11 vector<int> vec1(NUM); 12 vector<int> vec2(NUM); 13 14 int i; 15 for(int i = 0; i < NUM; i++) 16 { 17 vec1[i] = i * 5; 18 vec2[i] = i + 3; 19 } 20 21 for(int i = 0; i < NUM; i++) 22 { 23 cout<<"vec1:"<<vec1[i]<<" vec2:"<<vec2[i]<<endl; 24 } 25 return 0; 26 }
结果:
1 vec1:0 vec2:3 2 vec1:5 vec2:4 3 vec1:10 vec2:5 4 vec1:15 vec2:6 5 vec1:20 vec2:7
对vec的基本操作:
1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 5 using namespace std; 6 7 void printVector(vector<int> vec) 8 { 9 for (int i = 0; i < vec.size(); i++) 10 { 11 cout<<vec[i]<<" "; 12 } 13 cout<<endl; 14 } 15 16 bool compare(int &a, int &b) 17 { 18 return a>b; 19 } 20 21 int main() 22 { 23 vector<int> vec; 24 25 cout<<"vector size():"<<vec.size()<<endl; 26 for (int i = 0; i < 10; i++) 27 { 28 vec.push_back(i); //vec尾部压入i数据 29 } 30 cout<<"vector size():"<<vec.size()<<endl; 31 32 printVector(vec); 33 34 //删除第一个元素 35 vec.erase(vec.begin()); 36 printVector(vec); 37 38 vec.insert(vec.begin(),23); //在vec的头部插入23 39 vec.insert(vec.end()-1,4,44); //在vec的倒数第二个的数后面插入4个44 40 printVector(vec); 41 42 //获取指定位置的元素 43 cout<<"vec.at(0) ->"<<vec.at(0)<<endl; 44 cout<<"vec.at(1) ->"<<vec.at(1)<<endl; 45 46 cout<<"vec.front() ->"<<vec.front()<<endl; //vec 第一个元素 47 cout<<"vec.back() ->"<<vec.back()<<endl; //vec 最后一个元素 48 49 cout<<"翻转之前:"<<endl; 50 printVector(vec); 51 reverse(vec.begin(), vec.end()); 52 cout<<"翻转之后:"<<endl; 53 printVector(vec); 54 55 sort(vec.begin(),vec.end()); 56 cout<<"排序之后:"<<endl; 57 printVector(vec); 58 59 cout<<"逆序排序:"<<endl; 60 sort(vec.begin(),vec.end(),compare); 61 printVector(vec); 62 63 int v; 64 cin>>v; 65 return 0; 66 }
结果:
使用reverse, sort函数,需要头文件#include<algorithm>