1. 程式人生 > 其它 >基礎演算法學習---c++的stl庫們

基礎演算法學習---c++的stl庫們

vector 變長陣列

    size()          返回元素個數
    empty()         檢查是否為空
    clear()         清空
    front()/back()  返回頭尾元素 
    begin()/end()   迭代器

pair<a,b>           一個有a型別元素和b型別元素的結構體
    first           訪問第一個元素
    second          訪問第二個元素

string              字串
    size()/length()
    substr(a,b)     從a開始,長度為b
    c_str()         返回首地址
    clear()         清空

queue               佇列
    size()          返回大小
    empty()         檢查是否空
    push()          對尾插入
    pop()           對頭彈出
    front()/back()  檢視

priority_queue 優先佇列


    priority_queue<int> heap;                           預設為大根堆
    priority_queue<int,vector<int>,greater<int>> heap;  小根堆,或者直接插入負數

    push()          插入
    top()           返回堆頂
    pop()           彈出堆頂

stack 棧

    size()          大小
    empty()         是否空
    push()          尾部插入
    pop()           尾部彈出
    top()           返回尾部

deque 雙端佇列,缺點是很慢

    size()
    empty()
    clear()
    front()/back()
    push_back()/pop_back()
    push_front/pop_front()
    begin()/end()
    []

set,multiset,map,multimap

    size()
    empty()
    clear()
    begin()/end()

    set/multiset     set沒有重複元素,multiset有

        insert()        插入一個數
        find()          返回目標地址,如果不存在則返回end()
        count()         返回一個數的個數
        erase()
            (1) 輸入一個數x,刪除所有x
            (2) 輸入一個迭代器,刪除這個迭代器 
        lower_bound()/upper_bound()
            lower_bound(x)  返回大於等於x的最小數
            upper_bound(x)  返回大於x的最小數

    map/multimap     map沒有重複元素,multiamp有

        insert()
        erase()
        find()
        lower_bound()/upper_bound()
            lower_bound(x)  返回大於等於x的最小數
            upper_bound(x)  返回大於x的最小數

unordered_set,unodered_multiset,unodered_map,unodered_multimap 雜湊表

    和上面類似,時間複雜度為O(1),無序
    不支援lower_bound()/upper_bound(),迭代器++

bitset 壓位

    bitset<a>       a為數量
    
    支援位運算
    []
    
    count()         返回有多少個1
    any()           判斷是否至少有一個1
    none()          判斷是否全為0

    set()           變所有位置為1
    set(k,v)        將第k變成v
    reset()         把所有位變成0
    flip()          取反
    flip(k)         第k位取反