C STL使用技巧

2021-10-10 12:16:55 字數 3204 閱讀 8686

vector, 變長陣列,倍增的思想

#include

size

() 返回元素個數

empty

() 返回是否為空

clear

() 清空

front()

/back()

push_back()

/pop_back()

begin()

/end()

支援比較運算,按字典序

//遍歷方式:

for(

int i=

0;isize()

;i++

)for

(vector<

int>

::iterator i=a.

begin()

;i!=a.

end(

);i++

)for

(auto i=a.

begin()

;i!=a.

end(

);i++

)for

(auto x:a)

//c++ 11

pair<

int,

int>

first, 第乙個元素

second, 第二個元素

支援比較運算,以first為第一關鍵字,以second為第二關鍵字(字典序)

string,字串

#include

size()

/length

() 返回字串長度

empty()

clear()

substr

(起始下標,(子串長度)

) 返回子串

c_str

() 返回字串所在字元陣列的起始位址

queue, 佇列

#include

size()

empty()

push

() 向隊尾插入乙個元素

front

() 返回隊頭元素

back

() 返回隊尾元素

pop() 彈出隊頭元素

priority_queue, 優先佇列,預設是大根堆

#include

size()

empty()

push

() 插入乙個元素

top() 返回堆頂元素

pop() 彈出堆頂元素

//定義成小根堆的方式:

priority_queue<

int, vector<

int>

, greater<

int>> q;

stack, 棧

#include

size()

empty()

push

() 向棧頂插入乙個元素

top() 返回棧頂元素

pop() 彈出棧頂元素

deque, 雙端佇列

#include

size()

empty()

clear()

front()

/back()

push_back()

/pop_back()

push_front()

/pop_front()

begin()

/end()

set, map, multiset, multimap, 基於平衡二叉樹(紅黑樹),動態維護有序序列

#include

#include

size()

empty()

clear()

begin()

/end()

++,-- 返回前驅和後繼,時間複雜度 o

(logn)

set/multiset

insert

() 插入乙個數

find

() 查詢乙個數

count

() 返回某乙個數的個數

erase()

(1) 輸入是乙個數x,刪除所有x,時間複雜度o

(k + logn)(2

) 輸入乙個迭代器,刪除這個迭代器

lower_bound()

/upper_bound()

lower_bound

(x) 返回大於等於x的最小的數的迭代器

upper_bound

(x) 返回大於x的最小的數的迭代器

map/multimap

insert

() 插入的數是乙個pair

erase

() 輸入的引數是pair或者迭代器

find()

注意multimap不支援此操作,時間複雜度是 o

(logn)

lower_bound()

/upper_bound

()

unordered_set, unordered_map, unordered_multiset, unordered_multimap, 雜湊表

#include

#include

和上面類似,增刪改查的時間複雜度是 o(1

) unordered_multimap不支援[

] 不支援 lower_bound()

/upper_bound

(), 迭代器的++,--

bitset, 壓位

#include

bitset<

10000

> s;~,

&,|,

^>>

,<<==,

!=[]count

() 返回有多少個1

any(

) 判斷是否至少有乙個1

none

() 判斷是否全為0

set(

) 把所有位置成1

set(k, v) 將第k位變成v

reset

() 把所有位變成0

flip

() 等價於~

flip

(k) 把第k位取反

C STL 中 map 容器的說明和使用技巧

map是stl的乙個關聯容器,它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值 的資料 處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅黑樹 一 種非嚴格意...

C STL使用入門

stl standard template library,標準模板庫 我最開始接觸c 程式設計是從dos下的borland c 開始的。那時他們在最新版本3.1中就包含了一套模板庫用來做collection.那真是個好東東。當我開始使用visual c 2.2的時候,我甚至試圖去把borland公...

C STL使用總結

vector動態陣列 back 返回陣列最後乙個元素。宣告 vector res m,vector n,0 上面的一行宣告了乙個二維陣列m行n列的二維陣列,並且初始化為0 有乙個交換的函式reserve res.begin res.end 將res行交換 第一行變最後 第二行變倒數第二 stack堆...