STL - vector

头文件
#include < vector >
简介
  1. vector向量容器可以像数组一样进行随机访问,大小可以动态变化;
  2. 特征:相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。
  3. 与其它动态序列容器相比,vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起lists和forward_lists统一的迭代器和引用更好。
用法

1.定义及创建

vector<int> a            //定义一个a的一维数组 类型为int(可以改成其他的类型)`
vector<int> a[100010]    //a为一个二维数组


// 创建一个具有n个元素的向量容器对象,每个元素具有指定的初始值
vector<int> a(10,1)         // 定义一个a的一维数组,可以储存10个元素,这10个都为1
vector<int> tmp(a.begin(), a.begin()+3);  //a的第0个到第2个值初始化tmp
vector<int> a(arr,arr+5);  //将arr数组的元素用于初始化a

// 定义一个迭代器
vector<int>::iterator it;
2.具体操作
语法
v.push_back()       //在数组的最后添加一个数据
v.pop_back()        //去掉数组的最后一个数据 
v.front()        //返回第一个元素(栈顶元素)
v.begin()           //得到数组头的指针,用迭代器接受
v.end()             //得到数组的最后一个单元+1的指针,用迭代器接受
v.clear()           // 移除容器中所有数据
v.empty()           //判断容器是否为空
v.erase(pos)        //删除pos位置的数据
v.erase(beg,end)    // 删除[beg,end)区间的数据
v.size()            //回容器中实际数据的个数
v.insert(pos,data)  //在pos处插入数据
v.at(index);        //返回指定index位置处的元素
v.back();           // 返回容器最后一个数据的引用
v.swap(v2);         //交换两个容器中的数据
v.count(x)          //元素为x的个数

3.算法

/*  遍历元素  */
vector<int>::iterator it;
for(it=v1.begin(); it!=v.end(); it++) cout<<(*it)<<endl;
//或者
for(i=0; i<v.size(); i++) cout<<v[i]<<endl;


/*  元素翻转  */
reverse(vec.begin(), vec.end());


/*  元素排序  */
sort(v.begin(), v.end()); //采用的是从小到大的排序
//
bool cmp (const int& a,const int& b)
{
	return a > b;
}
sort(v.begin(),v.end(),cmp);//采用的是从大到小的排序

例子
vector <int> v;                            //定义vector
vector<int>::iterator it;                 //定义一个vector迭代器


for(i=4; i<=8; i++)                      //插入数据
	v.push_back(i);

for(it=v.begin(); it!=v.end(); it++)     //输出迭代器的值  4 5 6 7 8
	cout<<*it<<" ";
for(i=0; i<v.size(); i++)                //输出迭代器的值  4 5 6 7 8
	cout<<v[i]<<" ";

cout<<v.size()<<endl;    //输出元素个数  5

it=it-1;
v.erase(it);                             //删除最后一个元素

v.push_back(1);
sort(v.begin(), v.end());                    //vector排序
for(it=v.begin(); it!=v.end(); it++)          //输出vector元素 1 4 5 6 7 
	cout << *it << " ";

v.insert(v.begin(),100) ;                 //在pos( v.begin() )位置插入一个elem
cout<<v.front()<<endl;           //输出第一个元素 100


v.pop_back();                         //去掉最后一个元素
cout << "元素个数:" <<v.size() << endl;//输出元素个数   5( 100 1 4 5 6 )


v.clear();                                //vector清空
cout <<"清空后元素个数:" << v.size() << endl;    //输出元素个数  0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值