C++ STL/ (10) 階段小結--容器的共性以及使用場景
阿新 • • 發佈:2019-01-02
在前面的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:快 元素插入 末端 首尾兩段 任意位置 - - - -