C++---STL

目录

1. vector

2. string s;

3. queue,

4. stack(栈)

5. deque

6. set,map,multiset,multimap

7. unordered-set,unordered-map,unordered-multiset,unordered-multimap

8. bitset



1. vector

vector--#include    //系统为某一程序分配空间时所需时间与空间大小无关,与申请次数有关
    变长数组,倍增思想
    初始化:1. vector a(n);//长度为n的vector
             2. vector a(10,3);长度为10且元素都为3
    eg : vector a;    a.size( );//O(1)(所有容器都有)    a.empty( );//O(1)(所有容器都有)
        a.clear( );//清空(队列没有)        a.front( )//返回a的第一个数     a.back( )//a的最后一个数
        a.push_back( )//a后面中插入一个数        a.pop_back( );
        a.begin( )/a.end( )        erase( )(O(n))
        支持比较运算(按字典序来比)
  pairp 存储二元组//pair
    eg: p.first//第一个数     p.second//第二个数   支持比较运算
    初始化p=make-pair(10,"yxc");p={20,"abc"};    需要排序的放在first,
pair>//三元组


2. string s;


    字符串,substr(起始位置,字符串长度 ) , c-str( )//返回字符数组的起始地址
    s.size( )=s.length( )        s.empty( )    s.clear( )

3. queue,

---push( )//向队尾插入一个元素 , front( ) //返回队头元素, pop( )//弹出队头元素,push( )//队尾插入一个
 ,back( )//弹出队头元素    size( ),empty( );
  priority_queue(优先队列/堆)---(默认大根堆)
    push( ) //插入一个元素    top( ) //返回堆顶元素     pop( )//弹出堆顶元素
        //小根堆:第1种. priority-queue heap ;heap.push(-x);        
            第二种:priority-queue,greater>heap;

4. stack(栈)

---push( ) , top( ) , pop( ),size( ),empty( )

5. deque

(双端队列,队头队尾都可以插入删除且支持随机访问,相当于加强版的vector)
    size( ),empty( ),clear( ),
    front( ),//返回第一个元素        back( ),    //返回最后一个元素        push-back( )//末尾插入一个元素    
    pop-back( ),//返回最后一个元素        push-front( )//队首插入一个元素    pop-front( )//弹出队头元素
    begin( )/end( )

6. set,map,multiset,multimap

(基于平衡二叉树(红黑树))本质:动态维护有序序列    #include    #Include
    size( )    empty( )    clear( )    begin( )/end( )//支持++,--操作,返回前驱和后继O(logn)

    set s;(没有重复元素)---(所有操作logn)
    multiset ms(有重复元素)---(所有操作logn)
    set/multiset---insert( )//插入,find( )//查找,count( )//返回某个数的个数,
        erase( );//1.输入是一个数x,删除所有x, O(k+logn)(k是x的个数)        
                  2.输入是一个迭代器,删除这个迭代器
        lower-bound( )//返回大于等于x的最小的数的迭代器O(logn)
        upper-bound( )//返回大于x的最小的数的迭代器O(logn)

    map/multimap:
            insert( )    插入的数是一个pair
            erase( )    输入的参数是pair或者迭代器
            find( )
            []    O(logn)
                eg: mapa;
                a["yxc"]=1;
                cout<             lower-bound( )//返回大于等于x的最小的数的迭代器O(logn)
            upper-bound( )//返回大于x的最小的数的迭代器O(logn)

7. unordered-set,unordered-map,unordered-multiset,unordered-multimap

(hash表)
    和上面类似,增删改查O(1)
    不支持lower-bound( )/upper-bound( ),迭代器的++,--(和排序有关的都不支持)


8. bitset

(位存储/状态压缩)--压位//可以省8位空间
    bitset<10000>s;    //定义
    ~ , & , | , ^
    >> ,<<
    ==,!=
    [ ]
    count( )//返回有多少个1
    any( )//判断是否至少有一个1
    none( )//判断是否全为0
    set( )//把所有位置为1
    set(k,v)//第k位变为v
    reset( )//把所有位变成0
    flip( )//所有位取反==等价于~
    flip(k)//把第k位取反

***************************************************************************************

你可能感兴趣的:(c++,STL,queue,vector,set,map,bitset)