Vector:
1.可变长的动态数组
2.需包含头文件#include<vector> (当然,如果用了万能头文件#include<bits/stdc++.h>则可忽略)3.支持随机访问迭代器:
- 根据下标随机访问某个元素,时间复杂度O(1)
- 在尾部添加速度很快
- 在中间插入慢
4.所有STL算法都能对vector操作。
下面是关于vector使用的代码:
#include <iostream> #include <vector> #include <algorithm> using namespace std; void fun(int &n) //配套for_each输出vector容器 { cout<<n<<" "; } //自己设计比较函数,对元素进行降序排列。 bool cmp(const int &a,const int &b) { if(a!=b) return a>b; } int main(int argc, char const *argv[]) { vector<int> v(10); //定义一个vector容器 vector<int>::iterator i; //vector<int>::iterator i--迭代器定义 //对vector赋值 for(int j=0;j<v.size();++j) v[j]=1; v[0]=3;v[1]=5;v[2]=7; v.at(4)=10; //输出vector的值 cout<<"The original vector is:"; for_each(v.begin(),v.end(),fun); //相当于for(vector<int>::iterator i=v.begin();i!=v.end();++i) //STL中的功能,便于输(tou)出(lan):) cout<<"\n"; //向vector中插入元素 v.insert(v.begin(),9); //在v[0]插入9 v.insert(v.begin()+2,19); //在v[2]插入19 v.insert(v.end(),29); //在最后一个位置v[10+2+1]插入29 //输出 cout<<"The new vector is:"; for_each(v.begin(),v.end(),fun); cout<<endl; //删除 v.erase(v.begin()+1); v.erase(v.begin()+2,v.begin()+4); cout<<"The Deleted vector is:"; for_each(v.begin(),v.end(),fun); //清空 v v.clear(); cout<<endl<<"Cleared vector-size is:"<<v.size()<<endl; cout<<endl; //开始排序 cout<<"sort-vector:"<<endl; for (int j = 0; j < 10; ++j) { v.push_back(9-j); } cout<<"The original vector is:"; for_each(v.begin(),v.end(),fun); cout<<endl; sort(v.begin(),v.end()); //排序,默认升序. cout<<"The sorted vector is:"; for_each(v.begin(),v.end(),fun); cout<<endl; //将vector逆转 reverse(v.begin(),v.end()); cout<<"The reversed vector is:"; for (i = v.begin(); i != v.end(); ++i) { cout<<*i<<" "; } cout<<endl; //用自定义的排序规则,按从大到小排序 sort(v.begin(),v.end(),cmp); cout<<"The ownner-sorted original-vector is:"; for_each(v.begin(),v.end(),fun); cout<<endl; int a[5]={1,2,3,4,5}; //定义一个数组,并用vector复制 vector<int> v2(a,a+3); //构造函数并复制 a中的前3个数字 cout<<"v2为:"; for_each(v2.begin(),v2.end(),fun); return 0; }
编译结果: