关于vector

vector是非常方便的,一个模板库,可以在很多时候避免我们写很多行代码来实现一个经常用的东西.他的功能也非常强大,值得我们去学习.

这里面所有基础代码句子可以当成一个模板去记,虽然很多,但是学的时候也要打几遍,才能更好的记忆.

先把所需要的基础代码句子看一下:

//所需头文件
/*
#include<vector>//容器
#include<algorithm>//迭代器
*/

//创建
vector<int>v;//这是建立一个vector容器v,尖括号以内是说明容器存储的数据类型

//插入
v.push_back(10);//这是在容器里面放入数据10,尾部插入.
v.insert(v.begin(),2,100);//在容器头部里面放入2个100;

//访问
pos=v.front();//返回容器中第一个元素
pos=v.back();//返回容器中最后一个元素
v.empty();//判断该容器是否为空返回0,1;

//删除
v.erase(v.begin());//删除数据,头部删除.(括号内不必填数据)
v.pop_back();//也是删除数据,尾部删除.(括号内不必填数据)
v.erase(v.begin(),v.end());//清空容器内数据

//容器大小
pos=v.capacity();//pos为容器容量大小.(括号内不必填数据)
pos=v.size();//pos为容器里数据数量(括号内不必填数据)
v.resize(10);//改变容量,但是容器大小不变,多出的数据删除,多出的数据位置补为0;
v.reserve(100000);//将容器大小预存为100000;
vector<int>(v).swap(v);//用swap收缩内存;

reserve的使用原因

容器的使用中在存储的数据变多时,最早的容器申请为1;当超出容器大小时会重新申请一个能放下这些数据的容器,该容器大小不确定,但是当容器很大的时候,接近于原来的二分之三.所以在不断地更换容器的时候,只想原来容器的指针已经没有作用了.而且不断地更换容器会比较麻烦可以使用reserve来预留一个大的容器直接使用不用去不断地更换容器.

清空容器

在一个多实例的题里面,容器的数据可能会影响下一个样例的计算,所以要清空,当然也可以重新申请一个容器,避免出错.

swap收缩内存

因为一个容器在不断的存入数据和删除的时候,容器可能很大,但是数据的量可能会很少,这个时候就很占用内存.无用空间太多,所以可以使用swap来收缩内存,避免浪费.vector<int>(v).swap(v);意思就是重新申请一个适合的容器来存储,而原来的容器删除.

容器的遍历

容器的遍历需要使用迭代器
//这个?是你所创建的容器名称

第一种遍历
for(vector<int>::iterator it=?.begin();it!=?.end();it++)
{
	cout<<*it<<endl;
}

第二种遍历
vector<int>::iterator itBegin=?.begin();
vector<int>::iterator itEnd=?.end();
while(itBegin!=itEnd)
{
	cout<<*itBegin<<endl;
	itBegin++;
}

第三种遍历 回调函数for_each//myprint是自己定义的函数用来输出
void myprint(int val)
{
	cout<<val<<endl;
}
for_each(a.begin(),a.end(),myprint);

这种遍历是从头到尾过一遍,了解就行.

vector的运用需要自己去判断,不是所有的情况使用vector都合适.这种特殊容器的调用耗费时间,所以要有这个概念.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值