STL与贪心

STL

在OI里面最常用的几个容器:

stack,queue,deque,priority_queue,vector,set,map
 
stack, queue, deque
分别是栈、队列、双端队列。
双端队列的入队和出队操作在两端都可进行。
据说双端队列常数不小,建议少用
 
 
priority_queue
优先队列,也就是堆。
默认是大根堆。

 

vector
几乎是stl里面用的最多的容器了。
相当于是个动态数组,每次可以往末端插入一个元素,下标从0开始。
v.clear()和vector<>().swap(v)的区别。
前者是假装清空了,实际内存没有被回收。
后者是真的回收了,不过需要和v.size()的大小成正比的时间。
set/map                          
分别是集合/映射。
内部使用红黑树实现。
同样的当set<>和map<,>中
的第一个参数是自定义类型的时候
需要重新定于小于号。
复杂度基本上是O(log(当前大小))。

 

还有multiset和multimap
是可重集合和可重映射。
有两个注意的:第一个是count函数复杂度变成了O(log+答案)的,也就是如果有很多相同元素,那么count函数代价很大。
第二个是删除x的话,使用s.erase(x)会把所有权值为x的删除。
如果只想删掉一个需要s.erase(s.find(x))。
 
 
迭代器
只介绍set/map的迭代器。

 

 

 

 

 

 

 

 

贪心

 

 

 

 

 

 

 

 

 

 

 

posted @   神茗掉线中(冲AC)  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示