小结C++中一些自带的好用东西

 

STL部分

<set>/<multiset>

支持插入一个元素,删除指定key值的元素,查找指定key值的元素,返回最大/小值,找前驱,找后继,返回指定key值的相同元素个数。

部分代替平衡树中一些操作。不能updatapush_down之类的操作,也不能找第K大等。

setcmp可以自己写,这给我们带来了不少方便。

*如果在set中按key1比较是有序的,且key2也是有序的。此时我们要找指定key2时就可以在cmp函数中人工设置一个开关来解决。也就是说set中的查找要保证key是有序的。如NOI2007cash一题。

 

<map>/<multimap>

set不同之处在于map是一个映射,可以知道指定key值的一个映射(数据)。

在时间要求不是很苛刻的情况下,可以代替Hash。如记忆化搜索。

可以代替链表,即动态开空间。如AC自动机中son

可以嵌套数据结构。如mapset

<stack>

<queue>队列

<deque>双端队列

<vector>/<list>

类似于线性表一样的东西。

很大一个好处是内存是动态的。

 

 

一些线性表基本操作

 

    如果数据是线性有序的,就可以二分。   

     Lower_bound(S,T,key):找第一个大于等于key的。

     upper_bound(S,T,key):找第一个大于key的。

    当然也可以这么干

    upper_bound(S,T,key)-1:找第一个小于等于key的。

    Lower_bound(S,T,key)-1:找第一个小于key的。

    binary_search(S,T,key):判断关键字为key的是否存在。

 

Reverse(S,T):翻转

Unique(S,T):去重

min_element:返回最大

max_element:返回最小

next_permutation:下一个排列

prev_permutation:上一个排列

random_shuffle:随机生成一个元素的排列

 

其他

<complex>

       虚数的使用。

 

posted @ 2013-08-28 15:47  FancyCoder0  阅读(418)  评论(0编辑  收藏  举报