vector容器(顺序容器)

前言:容器包括

顺序容器(如vector,队列deque,list,array,string等,特点是具备快速访问容器元素的能力)

关联式容器(如set,map等,特点是支持高效的关键字查找)

1,特点:动态数组,更具操作性

2,常用函数

	vector<int>v;
	int x = 1;
	int y = 3;
	
	v.push_back(x);//尾增
	v.pop_back();//尾删
	v.at(y);//得到v[y]位置的数值
	v.front();//获得首元素的值
	v.back();//获得尾元素的值
	v.size();//元素个数
	v.clear();//清空元素
	v.empty();//元素为空返回1,否则返回0

3,常用迭代器及结合迭代器使用的函数

(迭代器,迭代器)(eg:(v.begin(),v.end())的使用有一个特点:

他的操作对象是包括括号左边,不包括括号右边

如(v.begin()+2,v.begin()+10)是对(第2个到第9个操作)(从第0个开始数),操作数是(10-2==8)个,这跟最基础的sort一样,sort(1,n+1)是对第1个到第n个操作,共操作(n+1)-1==n个

	vector<int>v;
	vector<int>a;
	int k = 2;

	v.begin();//指向第一个元素
	v.rbegin();//指向最后一个元素

	v.rend();//指向第一个元素前面的一个位置
	v.end();//指向最后一个元素后面的一个位置(相当于\0)

	//erase有删除一个于多个俩种写法
	v.erase(v.begin() + k);//删除第k个元素(从第0个开始数)
	v.erase(v.begin() + 3, v.begin() + 7); //删除容器第3,4,5,6共(7-3=4)个元素(从第0个开始数)

	//insert的使用,在指定迭代器后面插入一个或者多个元素
	v.insert(v.begin() + 2, 5);//在第二个后面插入5这个元素
	v.insert(v.begin()+1,3,666);//在第一个后面插入3个值为666的三个元素
	v.insert(v.begin()+6,{233,666});//用大括号括起来多个元素,在第六个后面插入233,666这俩个元素
	v.insert(v.begin(),a.begin(),a.end());//在第0个元素后面插入a容器所有元素
	

4,几个常用算法(使用algorithm库的,不是容器自带)

	vector<int>v;
	vector<int>a;
	
	//reverse将头尾元素完全倒过来
	reverse(v.begin(),v.end());//把这个区间元素全部倒装

	//copy,将一个容器的一个区间里的值全部放到另一个容器里面
	copy(a.begin()+2,a.begin()+5,v.begin()+6);//将a的[2,5)区间里面的元素复制(覆盖原来的值)到v中,从v的第六个开始存入(包括第六个),注意,copy只会对v已经开辟的空间进行copy,超过则不访问
	
	//find  查询区间是否有某个值
	find(v.begin(),v.end(),666);//查询这个区间是否存在666这个值,有则返回这个值,没有就返回v.end()
	//具体使用方法
	if(find(v.begin(),v.end(),666)!=v.end()){
		cout<<*find(v.begin(),v.end(),666);//注意,find返回的是迭代器(指针),需要*来获得地址
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值