vector 的用法(c++)
vertor是向量类型,它是一个对象实体。它作为容器可以容纳不同的实体,如int,flout,double,还有类类型。
1.包含头文件 #include <vector>
2.声明:vector<int> vet;
3.定义:
vector<int> a(10);//定义了10个整数的向量,没有给初值,值不确定 vector<int> b(10,1);//定义10个整数的向量,每个元素初值都是1 vector<int> c(b);//用另一个向量创建新向量 vector<int> d(b.begin(),b.begin()+3);//从b向量0到2元素的向量 int arr[7]={1,2,3,4,5,6,7}; vector<int> va(arr,arr+7);//从数组创建向量
4.遍历:
遍历有两种方式,一个是用下标遍历,类似数组,还有就是使用迭代器遍历,代码如下:
//遍历: for(int i=0;i<a.size();i++){ cout<<a[i]<<" "; } cout<<endl; vector<int>::iterator it; for(it=b.begin();it!=b.end();it++){ cout<<*it<<" "; } cout<<endl;
5.在结尾处添加元素:va.push_back(8);
6.删除结尾的元素:va.pop_back();
7.查看向量的大小:va.size();
8.查看向量是否为空:va.empty();
9.插入元素:va.insert(va.begin()+3,10);
10.删除某个元素:va.erase(va.begin()+3);
10.清空所以元素:va.clear()
算法: 包含头文件 #include <algorithm>
1.sort(va.begin(),va.end()), 对向量进行排序。默认为从小到大。
2.reverse(va.begin(),va.end()),对向量进行翻转
代码:
#include <iostream> #include <vector> #include <algorithm> using namespace std; void print_vec(vector<int> & a){ vector<int>::iterator it; for(it=a.begin();it!=a.end();it++){ cout<<*it<<" "; } cout<<endl; } int main(){ vector<int> a(10);//定义了10个整数的向量,没有给初值,值不确定 vector<int> b(10,1);//定义10个整数的向量,每个元素初值都是1 vector<int> c(b);//用另一个向量创建新向量 vector<int> d(b.begin(),b.begin()+3);//从b向量0到2元素的向量 int arr[7]={1,2,3,4,5,6,7}; vector<int> va(arr,arr+7);//从数组创建向量 //遍历: for(int i=0;i<a.size();i++){ cout<<a[i]<<" "; } cout<<endl; vector<int>::iterator it; for(it=b.begin();it!=b.end();it++){ cout<<*it<<" "; } cout<<endl; va.push_back(8); print_vec(va); va.pop_back(); print_vec(va); a.assign(va.begin(),va.begin()+3); print_vec(a); a.assign(8,4); print_vec(a); a.clear(); cout<<"clear"<<endl; print_vec(a); if(a.empty()) cout<<"empty"<<endl; a.resize(10); print_vec(a); a.clear(); a.resize(10,2); print_vec(a); //插入删除元素 cout<<"插入和删除:"<<endl; va.insert(va.begin()+3,10);//在该位置插入对应的元素 print_vec(va); va.erase(va.begin()+3);//删除该位置的元素 print_vec(va); if(a==b) cout<<"equal"<<endl; cout<<"size:"<<va.size()<<"front: "<<va.front()<<" back:"<<va.back()<<endl; //算法 reverse(va.begin(),va.end()); print_vec(va); sort(va.begin(),va.end()); print_vec(va); return 0; }