這些容器有很多是衍生關係,衍生不是派生,而是內含關係。比如heap內含乙個vector,priority-queue內含乙個heap,stack和queue都內含乙個deque,set/map/multiset/multimap都內含乙個rb-tree,hash_x都內含乙個hashtable
function
function
push_back(data)
pop_back() (除去末尾元素)
size()當前元素個數
capcity() 當前申請記憶體能容納元素的個數
resize(n); 將size改變為n,如果原本的size
reserve(n); 如果n
clear() –清空,size()==0,capcity()不變
empty()
front() ,back() 第乙個與最後乙個資料
begin(),end()獲取相應的iterator
insert(iterator position,data);
isnert(iterator postion, usinged int n, data) 插入到n個data到position前
erase(iterator position);
erase(iterator first, iterator last) 移除[first,last)
vector 可使用at(i)隨機訪問資料
function
function
push_front(data), push_back(data)
pop_front(), pop_back()
size()當前元素個數
clear() –清空
empty()
front() ,back() 第乙個與最後乙個資料
begin(),end()獲取相應的iterator
insert(iterator position,data);
isnert(iterator postion, usinged int n, data) 插入到n個data到position前
erase(iterator position);
erase(iterator first, iterator last) 移除[first,last)
remove(data) 遍歷 找到就移除
unique() 遍歷一遍,連續相等的資料最後只保留乙個,其他移除,所以不保證最後生成是集合
list裡 基於transfer(非公開函式)的操作
function
說明transfer(iterator position, iterator first, iterator last)
將[first,last)之間的元素移動到position前。該函式是非公開函式
splice
接合函式
sort
排序函式
reverse
元素順序取反
merge
有序合併鍊錶
int iv[5] = ;
list
ilist(iv, iv + 5);
int iv2[5] = ;
list
ilist2(iv2, iv2 + 5);
list
::iterator iter = find(ilist.begin(), ilist.end(), 99);
// 接合操作,把list2接到list的第乙個99前
ilist.splice(iter, ilist2); // ilist=, ilist2={}
ilist.reserve(); // ilist=
/** * list不能使用stl演算法sort,只能使用自己的成員函式sort
* 因為stl演算法sort只接受randomaccessiterator(隨機訪問迭代器)
* 本函式是quick sort
* */
ilist.sort(); // 排序ilist=
int iv[5] = ;
list
list1(iv, iv + 5);
int iv2[5] = ;
list
list2(iv2, iv2 + 5);
list2.sort();
list1.sort();
/** * merge 將乙個list合併到自己上,這兩個list事先必須都經過遞增排序
*/list2.merge(list1); // list1={},list2=
operator
作用==, !=
判斷是否為同乙個位置的iterator
++, –
前後移動
*獲得該位置的資料
/**
* 1.stl中的queue和stack都是通過整合其他的資料結構,基於他們的功能提供自己的功能,
* 也就是沒有單獨的實現的資料結構,這種被稱為(adapter)介面卡
* 2.我們可以選用他基於的資料結構,預設是deque
* 3.兩者都沒有iterator
*/stack
deque_stack;
stack
> vector_stack;
stack
> list_stack;
queue
deque_queue;
queue
> vector_queue;
queue
> list_queue;
function
說明例項
find(iterator first, iterator last, data)
返回相應的iterator,常常和container.insert聯合使用
vector::iterator iterator1 = find(v.begin(), v.end(), data);
參考 《stl原始碼剖析》
stl容器簡單總結
標準容器類 說明順序性容器 vector 從後面快速的插入與刪除,直接訪問任何元素 deque 從前面或後面快速的插入與刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入與刪除 關聯容器 set快速查詢,不允許重複值 multiset 快速查詢,允許重複值 map一對多對映,基於關鍵字快速...
STL 容器特點簡單總結
stl的容器可以分為以下幾個大類 一 序列容器,有vector,list,deque,string.二 關聯容器,有set,multiset,map,mulmap,hash set,hash map,hash multiset,hash multimap 三 其他的雜項 stack,queue,va...
STL順序容器簡單應用
include include includeusing namespace std void main01 演算法和迭代器能無縫連線 int num1 count v1.begin v1.end 3 cout num1 endl 容器裝元素 class teacher void main02 容器...