zoukankan      html  css  js  c++  java
  • STL 大法好

     #include <vector>
      1.支持随机访问,但不支持在任意位置O(1)插入;
     
      2.定义:
      ```cpp
          vector<int> a;
      ```
      3.a.size()返回a的长度,a.empty()返回bool型用来判断是否为空; O(1)
     
      4.a.clear()清除a;O(n)
     
      5.a的迭代器是“随机访问迭代器”,可以进行加减运算(O(1));
     
      6.a.begin()返回指向a中第一个元素的迭代器;
     
      7.a.end()返回a中第n个元素的后一位的迭代器;
     
      8.向量vector可以理解为左闭右开;
     
      9.a.front()返回a的第一个元素;
     
      10.a.back()返回a的最后一个元素;
     
      11.a.push_back(x)将元素x插入到vector的尾部;
     
      12.a.pop_back()将最后一个元素弹出该向量;

     
     
     #include<queue>
      1.不支持随机访问;
     
      2.定义:
      ```cpp
          queue<int> q;
          priority_queue qu;
      ```
      3.q.push(x)将元素x从队尾入队;  O(1)
     
      4.q.pop()将队头元素弹出;   O(1)
     
      5.q.front()返回队头元素的值;   O(1)
     
      6.q.back()返回队尾元素的值;   O(1)
     
      7.qu.push(x)将元素x插入堆;  O(log n)
     
      8.qu.pop()删除堆顶元素;    O(log n)
     
      9.qu.top()查询堆顶元素     O(log n)
     
      10.qu实现的是大根堆,如果要将其改为小根堆,则要运算符重载或者存入相反数,或者向下面的两条所述利用黑科技更改;
     
      11.大根堆定义:priority_queue< int > pq
     
      12.小根堆定义:priority_queue< int ,vector< int >,greater< int > >pq
     
      13.重载运算符:
      ```cpp
    bool operator < (const rec &x,const rec &y)
    {
         return x.value>y.value;                 
    }

    ```

     #include <deque>
      1.支持[]随机访问; O(1)
     
      2.定义:
      ```cpp
    deque<int> d;
    ```
      3.d.begin()与d.end()与vector的类似; O(1)
     
      4.d.front()与d.back()与vector类似; O(1)
     
      5.d.push_back()从队尾入队;  O(1)
     
      6.d.push_front()从队头入队;  O(1)
     
      7.d.pop_back()从队尾出队;  O(1)
     
      8.d.pop_front()从队头出队;  O(1)
     
      9.d.clear()清空队列;  O(n)

     
     #include <set>
      1.不支持随机访问;
     
      2.定义:
      ```cpp
    set<int> s; //有序集合
    multiset<int> ms; //有序多重集合
    set<int>::iterator it;
    ```
      3.s.size()与vector一样; O(1)
     
      4.s.empty()与vector一样; O(1)
     
      5.s.clear()与vector一样;
     
      6.s的迭代器是“双向访问迭代器”,仅支持“++”和“--”; O(log n)
     
      7.s.begin(),a.end()与vector一样(注意前闭后开); O(1)
     
      8.s.insert(x)将一个元素x插入到集合s中; O(log n)
     
      9.s.find(x)在s中查找等于x的元素; O(log n)
     
      10.s.lower_bound(x)查找>=x的元素中最小的一个,并返回迭代器; O(log n)
     
      11.s.upper_bound(x)查找>x的元素中最小的一个,并返回迭代器;  O(log n)
     
      12.s.erase(it)删除it指向的元素; O(log n)
     
      13.s.erase(x)删除所有等于x的元素  O(k + log n)
     
      14.s.count(x)返回集合s中等于x的元素个数; O(k + log n)

    #include <map>

    定义:map<key_type,value_type> name;

    1.name.size()

    2.name.empty();

    3.name.clear();

    4.name.begin();

    5.name.end();

    6.name.insert();

    7.name.erase();

    8.name.find();(返回迭代器)

    9.name[];

    #include <bitset> (一个多维二进制数)

    bitset<10000> s;

    1.~s;可以使用

    2.&,|,^均可以直接使用

    3.>>,<<也可以使用;

    4.==,!=也可以;

    5.s[]既可以取值,也可以赋值;

    6.s.count();

    7.s.any();当且尽当s所有位均为0时返回0

    8.s.none();当且尽当s所有位均为0时返回1;

    9.s.set();把s所有位都变为1;

    10.s.set(a,b);把s的第a位改为b;

    11.s.reset();把s所有位都变为0;

    12.s.reset(k);把s的第k位改为0;

    13.s.flip(),把s的所有值取反;

    14.s.flip(k); 把s的第k位取反;

    副章:

    unique(a.begin(),a.end())返回一个迭代器的位置;

    lower_bound(a.begin(),a.end(),x)返回大于等于x的迭代器的位置;

    upper_bound(a.begin(),a.end(),x)返回大于x的迭代器的位置;

  • 相关阅读:
    JDBC
    Linux下的tar压缩解压缩命令详解
    Shell编程介绍
    SSH服务认证类型介绍
    SSH介绍及连接原理
    MySQL引擎之innodb介绍及特点
    myisam 存储引擎介绍及特点
    maven项目依赖中报错Plugin ‘org.apache.maven.plugins:maven-compiler-plugin:’ not found
    List调用add方法报错java.lang.UnsupportedOperationException
    C基础
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11212897.html
Copyright © 2011-2022 走看看