STL基础系列之--vector

 

向量(vector)是一种随机访问的数组类型,提供了对数组元素的快速,随机访问,以及在序列尾部快速随机的插入和删除操作。它在需要时还可以改变其大小,是大小可变的向量。

为什么说vector是随机访问呢?解释这个可以参考链表(list)。

因为是一种随机访问的数据类型,不同向量中的每个元素并不在同一块内存空间。

 

下面写一些简单的vector的个功能应用的例子(具体功能代码中有注释):

 

注:vector不适合做有大量插入删除操作的容器,因为拷贝内存本身浪费很大。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

void output(int n)
{
	cout<<n<<" ";
}

bool compare(int a,int b)
{
	return (a>b);//a<b:升序,a>b:降序
}

int main()
{
	vector<int> int_num;

	for(int i=10;i>1;i--)//赋值
		int_num.push_back(i);

	cout<<"int_num1:"<<endl;
	cout<<"原始数字:";
	for_each(int_num.begin(),int_num.end(),output);//第一种输出
	cout<<endl;

	cout<<"升序输出:";
	sort(int_num.begin(),int_num.end());
	//for_each(int_num.begin(),int_num.end(),output);
	for(vector<int>::iterator it=int_num.begin();it!=int_num.end();it++)//第二种输出
	{
		//cout<<*it<<" ";
		cout<<it[0]<<" ";
	}
	cout<<endl;

	cout<<"降序输出:";
	sort(int_num.begin(),int_num.end(),compare);
	int Size=int_num.size();
	for(int i=0;i<Size;i++)//第三种输出
	{
		cout<<int_num[i]<<" ";
		//cout<<int_num.at(i)<<" ";
	}
	cout<<endl;

	cout<<"最后增加一个数字:";
	int_num.push_back(25);//在Vector最后添加一个元素
	for_each(int_num.begin(),int_num.end(),output);
	cout<<endl;

	cout<<"删除最后一个数字:";
	int_num.pop_back();//移除最后一个元素
	for_each(int_num.begin(),int_num.end(),output);
	cout<<endl;

	cout<<"删除中间数字:";
	int_num.erase(int_num.begin()+2);//删除  int_num[2]
	for_each(int_num.begin(),int_num.end(),output);
	cout<<endl;

	cout<<"返回第一个数字:"<<int_num.front()<<endl;
	cout<<"返回最末一个数字:"<<int_num.back()<<endl;


	vector<int> int_num2;

	cout<<"int_num2:"<<endl;
	cout<<"原始数字:";
	//int_num2.assign(3,10);//赋3个值为10的元素到vector中   会覆盖
	int_num2.assign(int_num.begin(),int_num.end());//对Vector中的元素赋值
	for_each(int_num2.begin(),int_num2.end(),output);
	cout<<endl;

	cout<<"插入数字后:";
	vector<int>::iterator it=int_num2.begin();
	int_num2.insert(it,3,100);//开始位置加入3个100
	//int_num2.insert(int_num2.begin()+1,100);//begin+1位置加入一个100
	for_each(int_num2.begin(),int_num2.end(),output);
	cout<<endl;

	vector<int>::iterator result = find(int_num2.begin(),int_num2.end(),5);//查找数字

	if(result==int_num2.end())
		cout<<"No find"<<endl;
	if(result!=int_num2.end())
		cout<<"Find :"<<*result<<endl;;
	 

	swap(int_num,int_num2);//交换两个vector

	cout<<"交换后int_num:";
	for_each(int_num.begin(),int_num.end(),output);
	cout<<endl;
	cout<<"交换后int_num2:";
	for_each(int_num2.begin(),int_num2.end(),output);
	cout<<endl;

	system("pause");
	return 0;
}


 

自己学习过程中可以参考C++手册,测试各种功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值