1. 程式人生 > >C++ STL/ (10) 階段小結--容器的共性以及使用場景

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

在前面的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()
    stack 5 方法 push() pop() top() size() empty()
    queue 6 方法 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容器使用時機

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