C STL專題的諸多函式

2021-09-11 22:36:33 字數 3228 閱讀 8223

一、標頭檔案#include

這個頭函式為演算法標頭檔案,下面介紹演算法中的幾個基本函式

sort函式

這個函式是乙個排序函式,方法用於對陣列的元素進行排序,並返回陣列。

主要用法如下:sort(begin, end,排序方式)如果未填寫排序方式,預設從小到大排序。

倘若想要從大到小排序:sort(begin, end, cmp);

它使用的排序方法是類似於快排的方法,時間複雜度為n*log2(n),執行效率較高,極大方便了我們的**。

下面為大家附加乙個**:

#include #include #include using namespace std;

int main()

sort(a, a + 5);

sort(b.begin(), b.end());

for (int i = 0; i < 5; i++)

cout << a[i] << " ";

cout << endl;

for (int i = 0; i < 5; i++)

cout << b[i] << " ";

return 0;

}

上述**,可以輸入在int範圍內任意5個數字,程式會自動從小到大進行排序後輸出。

以及四個常用函式

①bool next_permutation(begin, end);

改變區間內元素的順序,產生下乙個排列。

②bool prev_permutation(begin, end);

產生前乙個排列。end為最後乙個元素的下乙個位置。

③upper_bound(begin, end, value);

返回》value的元素的第乙個位置。

④lower_bound(begin, end, value);

返回》=value的元素的第乙個位置。

上述四個函式都要注意在begin與end之間,都是左閉右開的區間形式,都在陣列中進行運用。

二、標頭檔案: #include

set 和 multiset會根據特定的排序準則,自動將元素排序,兩者的不同之處在於multiset可以允許元素重複而set不允許元素重複。

set如同在高中數學對於集合的定義,不允許重複的數字出現,如果在乙個陣列**現了多個相同的數字,set函式會自動排序清除相同元素(set的功能會經常運用在除重的題目中)

multiset與set函式不同,進行排序後不會清楚陣列中的相同元素,如果希望保留相同元素,可以進行運用。

定義:set set_name;

如:set s;//預設由小到大排序

如果想按照自己的方式排序,可以過載小於號、

set和multiset 簡單應用

操作:s.insert(elem) – 安插乙個elem副本,返回新元素位置。

s.erase(elem) – 移除與elem元素相等的所有元素,返回被移除 的元素個數。

s.erase(pos) – 移除迭代器pos所指位置上的元素,無返回值。

s.clear() – 移除全部元素,將整個容器清空。

s.size() – 返回容器大小。

s.empty() – 返回容器是否為空。

s.count(elem) – 返回元素值為elem的元素的個數。

s.lower_bound(elem) – 返回 元素值》= elem的第乙個元素位置。

s.upper_bound(elem) – 返回元素值 > elem的第乙個元素的位置。

以上位置均為乙個迭代器。

s.begin() – 返回乙個雙向迭代器,指向第乙個元素。

s.end() – 返回乙個雙向迭代器,指向最後乙個元素的下乙個位置。

迭代器舉例:

multiset :: iterator pos;

for(pos = s.begin(); pos != s.end(); pos++)

三、標頭檔案: #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.begin() 返回乙個雙向迭代器,指向第乙個元素。

m.end() 返回乙個雙向迭代器,指向最後乙個元素的下乙個 位置。

m.clear() 講整個容器清空。

m.erase(elem) 移除鍵值為elem的所有元素,返回個數,對 於map來說非0即1。

m.erase(pos) 移除迭代器pos所指位置上的元素。

直接元素訪問:

m[key] = value;

查詢的時候如果沒有鍵值為key的元素,則安插乙個鍵值為key的新元素,實值為預設(一般0)。

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));

四、在queue中存在乙個新的函式

優先佇列(priority_queue)

乙個擁有權值觀念的queue,自動依照元素的權值排列,權值最高排在前面。預設情況下,priority_queue是利用乙個max_heap完成的。

定義:priority_queue priority_queue_name;

如:priority_queue q;//預設是大頂堆

操作:q.push(elem) 將元素elem置入優先佇列

q.top() 返回優先佇列的下乙個元素

q.pop() 移除乙個元素

q.size() 返回佇列中元素的個數

q.empty() 返回優先佇列是否為空

在優先佇列中最要注意的是,在優先隊中,不一定是單調的!但是可以在短時間內找到佇列中最大數值或者最小數值。

C STL專題總結

stl是acm第乙個學習的知識,總體來說與優秀的同學有著特別的的差距,自己也會繼續加油,繼續縮小與他們的差距,不會懈怠!下列是stl專題裡所有出現的標頭檔案及相應的函式。棧 stack 標頭檔案 include stackstack name 如 stack s 操作 empty 返回bool型,表...

C STL中的函式

標頭檔案 algorithm 中有很多好用的函式 max a,b 返回a和b中的最大值,引數可以是浮點數 min a,b 返回a和b中的最小值,引數可以是浮點數 tolower char ch 將字元型變數ch的大寫轉換為小寫,其他不變 toupper char ch 將字元型變數ch的小寫轉換為大...

C STL 排序函式

c 的寫法 sort和stable sort可對原生陣列 stl容器排序,sort採用快排實現,不穩定,stable sort採用歸併排序實現,穩定,時間複雜度均為n log n 一般排序 sort stable sort在中 函式原型 void sort ranit first,ranit las...