C STL/ (10) 階段小結–容器的共性以及使用場景

NO IMAGE

在前面的blog中,我們介紹了順序容器(string,vector,deque,list,stack,queue)和關聯容器(set,multiset,map,multimap)。本節,我們就來總結一下以上這些容器使用中的異同。


  • 順序容器

    容器名稱初始化賦值元素存取大小插入和刪除擴充套件
    string預設 帶引數 拷貝 運算子過載= /.assgin(){2種}[] /.at()size(),strlen(),empty()insert() erase() clear()拼接: /append() 查詢: find()/rfind() 替換:replace() 子串: substr() 比較: compare()
    vector預設 帶引數 拷貝 運算子過載= /.assgin() {2種}[] /.at()size(),resize(),reserve(),capacity(),empty()push_back() pop_back() insert(){2種} erase(){2種} clear()
    deque預設 帶引數 拷貝 運算子過載= /.assgin(){2種}[] /.at()size() resize() empty()push_front() pop_front() push_back() pop_back() insert(){2種} erase(){2種} clear()
    list預設 帶引數 拷貝 運算子過載= /.assgin(){2種}只有迭代器,不能隨機存取size() resize() empty()push_front() pop_front() push_back() pop_back() insert(){2種} erase(){2種} clear()
    stack5方法push() pop() top() size() empty()
    queue6方法push() pop() front() back() size() empty()

  • 關聯型容器

    容器名稱初始化賦值元素存取大小插入和刪除查詢
    set預設 拷貝 運算子過載=iterator且不能用iterator改變容器中的值size() empty()insert(ele) erase(){3種} clear()find() upper_bound() lower_bound() equal_range()
    multiset同上multiset允許set容器中元素值重複
    map預設 拷貝 運算子過載= []iterator且不能用iterator改變容器中的值size() empty()insert(pair<class T,class T> (xx,xx)) insert(make_pair(xx,xx)) insert(map<class T, class T>:: value_type(xx,xx)) erase(){3種} clear()
    multimap同上multimap允許map容器中key值重複

  • STL容器使用時機

    容器vectordequelistsetmultisetmapmultimap
    結構單端陣列雙端陣列雙向連結串列二叉樹二叉樹二叉樹二叉樹
    隨機存取nonono對key:可no
    元素搜尋很慢對key:快對key:快
    元素插入末端首尾兩段任意位置