stl自己的總結

2022-08-13 19:48:18 字數 3871 閱讀 8265

容器分為:

序列式:vector動態陣列,deque雙向佇列,list雙向序列。

關聯式容器:set,multiset,map,multimap,hash table

容器配接器:stack,queue,priority_queue

stl的資料結構:biset,string,valarray

string為basic_string的乙個typedef,儲存字串

bitset  bitset<10> 乙個長度為10的二進位制串  bitset<10> bs(7)  為0000000111

1 #include 2 #include 3 #include 45

using

namespace

std;67

intmain()

8

view code

valarray

可以對整個陣列直接進行操作

1 #include 2 #include 3 #include 45

using

namespace

std;

67 templatevoid printvalarray(const valarray&va)813

14int

main()15;

21 valarray va3(ia,sizeof(ia)/sizeof(ia[0

]));

22printvalarray(va3);

23 valarray va4(ia+1,4

);24

printvalarray(va4);

25 val=(val2+va4)*va4;

26printvalarray(val);

27return0;

28 }

view code

序列式:

vector,list,deque不可以相互巢狀實現

stack,queue,priority_queue可以基於以上三個高效實現。

vector:隨機訪問高效,可以用下標操作

push_back(),pop_back();insert()

統計容器元素:size()目前大小,capacity()實際能夠容納,max_size()能夠容納最大數。

設定容器大小:resize(),reserve();

判斷空:empty();

清空:clear();刪除:erase() ,erase(first,last)

返回某值的引用:vectorc   c.at(index)

c[index]直接進行值操作。

c.front()返回第乙個元素 c.back()返回最後乙個元素

迭代器相關:begin(),end(),rbegin(),rend()  

基於迭代器的演算法:find(),find_if(first,last,條件)

元素排序:sort()

物件交換:swap()

list:插入刪除高效

自動擴張,插入刪除不會影響指向元素的指標,引用,不會造成失效,

不提供下標操作。

push_front(),pop_front(),push_back(),pop_back(),erase(),clear(),insert(),remove(),remove_if()

resize(),size(),max_size()  size_type型

begin(),end(),rbegin(),rend(),back(),front()

empty(),有迭代器

list_three.assign(list_one.begin(),list_one.end())  把list3中的一部分元素換成list1

list_two.assign(5,5.6)把list2中的五個元素換成5.6

運算子操作:operator== >= <= != < >     listl1,l2

l1.push_back(1),l2.push_back(2)  直接if(l1>l2) 返回false;

其他成員函式:

merge() 把兩個list合併,並按照公升序排列

sort()預設從小排大

remove()直接把具體要刪除的值刪除--

remove_if(條件,值)-------------------兩者刪除要刪除的所有的值

splice(iterator it,list & x)

splice(iterator it,list& x,iterator first)

splice(iterator it,list& x,iterator first,iterator last) 注意合併之後。x為空容器。

unique()把連續的一樣的元素刪除,保留乙個

#include

not_equal_topred;

unique(pred)滿足某種條件刪除

list:很重要;但是無操作符  以及成員函式at()

deque:

插入費力。在兩端插入刪除很快

resize(),max_size(),size()

push_back(),push_front(),pop_back(),pop_front(),insert()

begin(),end(),rbegin(),rend()

back(),front()

empty()

erase(),clear()

assign()

有運算子即對下標進行操作

deque的模版函式: == < != <= >= > <

map/multimap

可通過operator過載排序

size(),empty(),find(),lower_bound(),upper_bound(),equal_range(),max_size(),count()

upper_bound()大於key的第乙個元素

lower_bound()大於或等於key的第乙個元素

equal_range()一對值大於或大於等於key的第乙個元素

------以上三個均為返回迭代器

map/multimap

lower_bound()返回指向key前面的迭代器。

upper_bound()返回大於key的迭代器。

equal_range()返回兩個第乙個是lower_bound(),upper_bound().

map比較。實值比較。

swap(),begin(),end(),rbegin(),rend()

swap(m1,m2) m1.swap(m2),count()

演算法函式:

for_each(iterator begin,iterator end,proc op)對first到end呼叫operator 

count(iterator begin,iterator end,const t& value)

count(iterator begin,iterator end,unarypredicate op)只有op為true時才計數

iterator max_element(iterator beg,iterator end)

iterator max_element(iterator beg,iterator end,compfunc op)

iterator min_element(iterator beg,iterator end)

iterator min_element(iterator beg,iterator end,compfunc op)

find(iterator begin,iterator end,const t& value)

find_if(iterator begin,iterator end,unarypredicate op)

i

自己總結一些C 常用的STL

1 堆疊 stack 先進先出 fifo 標頭檔案 include stack 定義方式 stack int s 乙個名為s的整形堆疊 操作 s.push x1 將x1入棧 s.pop 出棧,注意 本操作執行的內容是刪除棧頂元素,並不對它進行訪問 s.top 訪問棧頂 s.empty 判斷棧是否為空...

stl 的容器總結

優先佇列簡單容器 stack 棧 queue 佇列 deque 雙端佇列 priority queue優先佇列 list 鍊錶 vector 向量 map對映 set 幾何 stack 先進後出 queue 先進先出 這是兩個最基礎的容器具體的操作只有 push pop size empty deq...

學習STL的總結

後面的舉例都是vector型別,vector型別的變數是vec 1.stl 標準模板庫 有vector,set list map queue string stack 等。2.這些容器都有初始化 插入 刪除 查詢 遍歷,判斷是否為空 清空 容器大小 3.初始化 vector,set list que...