STL容器簡單描述

2021-07-16 06:17:35 字數 3036 閱讀 5048

這些容器有很多是衍生關係,衍生不是派生,而是內含關係。比如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 容器...