基礎演算法學習---c++的stl庫們
阿新 • • 發佈:2021-07-18
vector 變長陣列
size() 返回元素個數 empty() 檢查是否為空 clear() 清空 front()/back() 返回頭尾元素 begin()/end() 迭代器 pair<a,b> 一個有a型別元素和b型別元素的結構體 first 訪問第一個元素 second 訪問第二個元素 string 字串 size()/length() substr(a,b) 從a開始,長度為b c_str() 返回首地址 clear() 清空 queue 佇列 size() 返回大小 empty() 檢查是否空 push() 對尾插入 pop() 對頭彈出 front()/back() 檢視
priority_queue 優先佇列
priority_queue<int> heap; 預設為大根堆
priority_queue<int,vector<int>,greater<int>> heap; 小根堆,或者直接插入負數
push() 插入
top() 返回堆頂
pop() 彈出堆頂
stack 棧
size() 大小 empty() 是否空 push() 尾部插入 pop() 尾部彈出 top() 返回尾部
deque 雙端佇列,缺點是很慢
size()
empty()
clear()
front()/back()
push_back()/pop_back()
push_front/pop_front()
begin()/end()
[]
set,multiset,map,multimap
size() empty() clear() begin()/end() set/multiset set沒有重複元素,multiset有 insert() 插入一個數 find() 返回目標地址,如果不存在則返回end() count() 返回一個數的個數 erase() (1) 輸入一個數x,刪除所有x (2) 輸入一個迭代器,刪除這個迭代器 lower_bound()/upper_bound() lower_bound(x) 返回大於等於x的最小數 upper_bound(x) 返回大於x的最小數 map/multimap map沒有重複元素,multiamp有 insert() erase() find() lower_bound()/upper_bound() lower_bound(x) 返回大於等於x的最小數 upper_bound(x) 返回大於x的最小數
unordered_set,unodered_multiset,unodered_map,unodered_multimap 雜湊表
和上面類似,時間複雜度為O(1),無序
不支援lower_bound()/upper_bound(),迭代器++
bitset 壓位
bitset<a> a為數量
支援位運算
[]
count() 返回有多少個1
any() 判斷是否至少有一個1
none() 判斷是否全為0
set() 變所有位置為1
set(k,v) 將第k變成v
reset() 把所有位變成0
flip() 取反
flip(k) 第k位取反