STL容器的常用成员函数

一、vector&deque (唯二支持随机访问的容器)
1.插入:

v.push_back(5);
v.insert(it,5); //在制指定位置插入
v.insert(p,n,t);//在p迭代器位置插入n个t
v.insert(p,b,e);//在p迭代器位置插入b迭代器和e迭代器之间的元素
dq.push_front();

2.删除

v.pop_back();
v.erase(it);
dq.pop_front();

3.排序,查找,二分查找

sort(v,v+5,Mycompare);
find(v,v+5,val); //复杂度为n,返回val所在处的迭代器
binary_search(v,v+5,val);

4.头尾元素,大小/是否为空

v.front();
v.end();
v.size();
v.empty();

5.返回头/尾引用:

v.front();
v.back();

5.清空

v.clear();

二、list
除了一中的3(即需要随机访问迭代器的算法)都支持
多出来的功能:
1.成员函数sort

l.sort(Mycompare)//此处可以用greater<int>,less<int>等

2.删除所有等于value的值

l.remove(val);

3.移除相同元素

l.sort();
l.unique();  //必须先排序再unique才能达到效果

3.合并链表

l1.merge(l2);//被合并的链表l2会被清空

4.翻转链表

l.reverse();

5.在指定位置前面插入另一链表中的一个或多个元素,并在另一链表中删除被插入的元素

	p1 = find(lst1.begin(),lst1.end(),3);
	p2 = find(lst2.begin(),lst2.end(),200);
	p3 = find(lst2.begin(),lst2.end(),400);
	lst1.splice(p1,lst2,p2, p3);  
	//将[p2,p3)插入p1之前,并从lst2中删除[p2,p3)

三、容器适配器
1.stack

stk.push(5);
stk.pop();
stk.top();
stk.empty();
stk.size();

2.queue

q.push();
q.pop();
q.top();
q.front();//与top功能相同
q.back();
q.empty();
q.size();

3.priority_queue
其他用法同queue,差别在声明的时候
#删除函数要求每次删除操作都保证删除为所有元素中最大元素。

priority_queue<int,vector<int>,greater<int> > pq;

声明的时候如果要写比较规则要注意
①必须声明第二个值——构造方式(vector/queue)
②比较方式必须为函数对象或者显式的函数指针

四、set&multiset
1.声明:
from郭炜
注意MyLess是一个函数对象!!

2.成员函数:
from郭炜
from郭炜
注意如果是set,则insert会返回一个pair对象,first为所插入元素等值元素的指针,second为本次插入是否进行。

五、map&multimap:
map/multimap里面存放的都是pair对象。容器按照first(key值进行排序)
1.声明:
from 郭炜
2.成员函数:
基本同set,但是要注意

pairs.insert(mmid::value_type(15,2.7));
//multimap里面有定义 :
typedef pair<const Key, T> value_type;

pairs.insert(make_pair(15,2.7));

3.map的特殊用法:
map成员函数[]:
由于map里面一个key值只能有一个,所以可以用[]来进行索引,
from郭炜

声明:文中图片部分截自郭炜老师程序设计与实习课程PPT,版权归郭炜老师所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值