使用vector,需要引用vector库:
#include<vector>
首先,创建一个可以容纳int的vector变量——arr:
vector<int> arr;
接着,就可以使用一些vector的内建函数了:
arr.push_back(9);//在arr结尾插入数字9 arr.pop_back();//删除arr末尾最后一个项 arr.front();//arr的第一个项的值 arr.back();//arr的最后一个项的值 arr.begin();//arr的第一个项的指针 arr.end();//arr的最后一个项的指针 arr.size();//arr的实际长度 arr.erase(arr.begin(),arr.end());//删除从arr的第一个到最后一个项 arr.insert(arr.begin(),5);//在arr的头之前插入数字5 arr.insert(arr.begin(),6,5);//在arr的头之前插入6个5 arr.empty();//判断arr是否为空 arr.clear();//将arr清空
Vector可以搭配一些算法使用,首先应用algorithm库:
#include<algorithm>
算法函数如下:
sort(arr.begin(),arr.end());//对vector排序 stable_sort(arr.begin(),arr.end());//对vector稳定排序 reverse(arr.begin(),arr.end());//反转vector vector<int>::iterator newend = unique(arr.begin(),arr.end());//对arr去重,并把去重后的实际个数存在迭代器newend里面 arr.erase(newend,arr.end());//把从newend到arr最后一项(即重复的数字)去除
附上完整测试代码:
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main(){ cout<<"Vector functions:"<<endl; vector<int> arr; arr.push_back(9); arr.push_back(3); arr.push_back(5); arr.push_back(5); arr.push_back(7); arr.push_back(5); arr.push_back(3); arr.push_back(4); arr.push_back(2); arr.push_back(1); cout<<"arr.push_back() : "; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; arr.pop_back(); cout<<"arr.pop_back() : "; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; cout<<"arr.front() : "<<arr.front()<<endl; cout<<"arr.back() : "<<arr.back()<<endl; cout<<"arr.size() : "<<arr.size()<<endl; arr.erase(arr.begin()+4,arr.end()); cout<<"arr.erase() : "; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; arr.insert(arr.begin(),6,5); cout<<"arr.insert() : "; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; cout<<endl<<endl<<"Algorithm functions:"<<endl; sort(arr.begin(),arr.end()); cout<<"sort():"; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; reverse(arr.begin(),arr.end()); cout<<"reverse():"; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; vector<int>::iterator oldend = arr.end(); vector<int>::iterator newend; newend = unique(arr.begin(),arr.end()); arr.erase(newend,oldend); cout<<"unique():"; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; cout<<endl<<endl<<"Vector functions:"<<endl; cout<<"arr.empty() : "; if(arr.empty() == false){ cout<<"false"<<endl; } else{ cout<<"true"<<endl; } arr.clear(); cout<<"arr.clear() : "; for(int i = 0;i<arr.size();i++){ cout<<arr[i]<<" "; } cout<<endl; cout<<"arr.empty() : "; if(arr.empty() == false){ cout<<"false"<<endl; } else{ cout<<"true"<<endl; } }
补充说明:在C中,有很多东西需要自己实现。C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能。vector是其中之一,vector指向量,可以理解为“变长数组”,长度根据需要而自动改变的数组。有时会碰到普通数组会超过内存的情况,可以使用vector解决。而且,vector可以用来以邻接表的方式存储图,可以解决当节点数太多,无法使用邻接矩阵,又害怕使用指针实现邻接表的时候,使用很简单。