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;
}
编译结果: