zoukankan      html  css  js  c++  java
  • 小结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>

           虚数的使用。

     

  • 相关阅读:
    java 异常处理
    c/c++ 多维数组和指针
    c/c++ 数组和指针
    c/c++ 数组 数组的引用,指针数组的引用
    c/c++ 标准库 迭代器(iterator)
    c/c++ 标准库 vector
    c/c++ 标准库 string
    c/c++ 模板与STL小例子系列<三> traits
    c++ 右值引用,move关键字
    c/c++ 右值引用
  • 原文地址:https://www.cnblogs.com/oldmanren/p/3287371.html
Copyright © 2011-2022 走看看