【技巧总结】——STL

本文总结了STL中map、set/multiset、vector和bitset的使用技巧和经典应用场景。map作为下标-值对的数据结构,适用于广泛的场景但要注意其高复杂度。set与multiset区别在于去重,可用于排序和高效查找。vector本质是动态数组,常与其他数据结构结合使用,排序时需要注意语法。bitset便于将字符串转换并进行操作。文章通过实例展示了STL在解决碰撞检测、最短路等算法问题中的应用。

m a p map map

map<int,int> mp;

第一个是下标类型,第二个是值

map的应用十分广泛,但是缺点就是复杂度太高,是logn的,所以在使用的时候一定要计算复杂度。
另外,如果用了结构体当下标,那么一定要重载运算符!!
想标记一个整体的时候就可以用

m a p map map也有指针,调用这个指针是一个 p a i r pair pair的类型, f i s r t fisrt fisrt返回下标, s e c o n d second second返回值
经典例题:
碰撞检测

s e t 与 m u l t i s e t set与multiset setmultiset

区分:前者去重,后者不去重,都是按从小到大排序的
这玩意可以直接 l o w e r _ b o u n d lower\_bound lower_bound的,,也支持指定位置/元素的删除,对于需要排序的东西,觉得比优先队列强,貌似堆能干的它都能,还有个指示器【滑稽】
特别注意,他的 l o w e r _ b o u n d lower\_bound lower_bound长这样

s.lower_bound(x)

如果想把一个set中的元素弄到另一个里,可以这样写

s2.insert(s1.begin(),s1.end());

经典例题:
D e l e g a t i o n Delegation Delegation(一道挺考验思维的题,但是是基于贪心基础上,算是用 m u l t i s e t multiset multiset优化了一下吧)
辣椒 s e t set set+贪心的经典应用,找最接近 x x x的数,要想到 s e t set set

v e c t o r vector vector

其实本质上它就是一个数组,但是你用了它就能和很多数据结构结合,完成奇妙的操作
特别注意,在用他排序的时候,一定要写成

bool cmp2(const vector<int> &x,const vector<int> &y)

这个样子
不然会T!!!!!!
经典例题:
最短路(在队列里面套了vector,维护的是具有同一性质的东西)

b i t s e t bitset bitset

bitset<100> z(s);

可以直接把字符串变成bitset,1011变成000···1011,用的时候直接调用z即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值