stl是acm第乙個學習的知識,總體來說與優秀的同學有著特別的的差距,自己也會繼續加油,繼續縮小與他們的差距,不會懈怠!
下列是stl專題裡所有出現的標頭檔案及相應的函式。
棧(stack)
標頭檔案:#include
stackstack_name;
如:stack s;
操作:empty() – 返回bool型,表示棧內是否為空 (s.empty() )
size() – 返回棧內元素個數 (s.size() )
top() – 返回棧頂元素值 (s.top() )
pop() – 移除棧頂元素(s.pop(); )
push(data_type a) – 向棧壓入乙個元素 a(s.push(a); )
佇列(queue)
標頭檔案:#include
定義:queue queue_name;
如:queue q;
操作:empty() – 返回bool型,表示queue是否為空 (q.empty() )
size() – 返回queue內元素個數 (q.size() )
front() – 返回queue內的下乙個元素 (q.front() )
back() – 返回queue內的最後乙個元素(q.back() )
pop() – 移除queue中的乙個元素(q.pop(); )
push(data_type a) – 將乙個元素a置入queue中(q.push(a); )
優先佇列(priority_queue)
標頭檔案: #include
定義:priority_queue priority_queue_name;
如:priority_queue q;//預設是大頂堆
操作:q.push(elem) 將元素elem置入優先佇列
q.top() 返回優先佇列的下乙個元素
q.pop() 移除乙個元素
q.size() 返回佇列中元素的個數
q.empty() 返回優先佇列是否為空
動態陣列(vector)
標頭檔案: #include
定義:vector vector_name;
如:vector v;
操作:empty() – 返回bool型,表示vector是否為空 (v.empty() )
size() – 返回vector內元素個數 (v.size() )
push_back(data_type a) 將元素a插入最尾端
pop_back() 將最尾端元素刪除
v[i] 類似陣列取第i個位置的元素(v[0] )
演算法(algorithm)
sort(begin, end); 預設從小到大排序
sort(begin, end, cmp);
bool next_permutation(begin, end); 改變區間內元素的順序,產生下乙個排列。
bool prev_permutation(begin, end); 產生前乙個排列。
end為最後乙個元素的下乙個位置。
upper_bound(begin, end, value); 返回》value的元素的第乙個位置。
lower_bound(begin, end, value); 返回》=value的元素的第乙個位置。
set標頭檔案: #include
定義:set set_name;
如:set s;//預設由小到大排序
操作:s.insert(elem) – 安插乙個elem副本,返回新元素位置。
s.erase(elem) – 移除與elem元素相等的所有元素,返回被移除 的元素個數。
s.erase(pos) – 移除迭代器pos所指位置上的元素,無返回值。
s.clear() – 移除全部元素,將整個容器清空。
迭代器舉例:
multiset :: iterator pos;
for(pos = s.begin(); pos != s.end(); pos++)
s.size() – 返回容器大小。
s.empty() – 返回容器是否為空。
s.count(elem) – 返回元素值為elem的元素的個數。
s.lower_bound(elem) – 返回 元素值》= elem的第乙個元素位置。
s.upper_bound(elem) – 返回元素值 > elem的第乙個元素的位置。
以上位置均為乙個迭代器。
s.begin() – 返回乙個雙向迭代器,指向第乙個元素。
s.end() – 返回乙個雙向迭代器,指向最後乙個元素的下乙個位置。
map標頭檔案: #include
定義:map map_name;
如:map m;//預設按string由小到大排序
操作:m.size() 返回容器大小
m.empty() 返回容器是否為空
m.count(key) 返回鍵值等於key的元素的個數
m.lower_bound(key) 返回鍵值等於key的元素的第乙個可安插的位置
m.upper_bound(key) 返回鍵值等於key的元素的最後乙個可安 插的位置
m.insert(elem) 插入乙個元素elem
a)運用value_type插入
mapm;
m.insert(map:: value_type (「robin」, 22.3));
b) 運用pair<>
m.insert(pair(「robin」, 22.3));
c) 運用make_pair()
m.insert(make_pair(「robin」, 22.3));
C STL專題的諸多函式
一 標頭檔案 include 這個頭函式為演算法標頭檔案,下面介紹演算法中的幾個基本函式 sort函式 這個函式是乙個排序函式,方法用於對陣列的元素進行排序,並返回陣列。主要用法如下 sort begin,end,排序方式 如果未填寫排序方式,預設從小到大排序。倘若想要從大到小排序 sort beg...
C STL使用總結
vector動態陣列 back 返回陣列最後乙個元素。宣告 vector res m,vector n,0 上面的一行宣告了乙個二維陣列m行n列的二維陣列,並且初始化為0 有乙個交換的函式reserve res.begin res.end 將res行交換 第一行變最後 第二行變倒數第二 stack堆...
C STL容器總結
三大類容器 1.序列式容器 vector deque list vector是一種動態陣列,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率比較慢。vector有多個建構函式,預設的建構函式是構造乙個初始長度為0的記憶體空間,且分配的記憶體空間是...