標準模板庫(六) STL演算法函式介紹

2021-07-05 19:45:52 字數 3091 閱讀 9887

1.iter_swap函式:交換兩個 forwarditerator 的值。

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

int main()

; int b=;

int len1=sizeof(a)/sizeof(a[0]);

int len2=sizeof(b)/sizeof(b[0]);

vectorv1(a,a+len1);

vectorv2(b,b+len2);

iter_swap(v1.begin(),v2.begin());

return 0;

}

2.lexicographical_compare函式 :(比較兩個序列。類似於strcmp,或者是string中的》號)

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

int main()

; int b=;

int len1=sizeof(a)/sizeof(a[0]);

int len2=sizeof(b)/sizeof(b[0]);

vectorv1(a,a+len1);

vectorv2(b,b+len2);

bool bb=lexicographical_compare(v1.begin(),v1.end(),v2.begin(),v2.end());/./對兩個序列逐一比較,v2>v1返回true。

return 0;

}

3.lower_bound 函式:返回乙個 iterator ,它指向在範圍內的有序序列中可以插入指定值而不破壞容器順序的第乙個位置。

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

int main()

; int b=;

int len1=sizeof(a)/sizeof(a[0]);

int len2=sizeof(b)/sizeof(b[0]);

vectorv1(a,a+len1);

vectorv2(b,b+len2);

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

vector::iterator ite=lower_bound(v1.begin(),v1.end(),6);//插入6,看6應該排在哪個前面

return 0;

}

4.max :返回兩個元素中的較大的乙個。 max_element :返回乙個 iterator ,指出序列中最大的元素。 min :兩個元素中的較小者。min_element :類似與 max_element ,不過返回最小的元素。 

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

int main()

; int b=;

int len1=sizeof(a)/sizeof(a[0]);

int len2=sizeof(b)/sizeof(b[0]);

vectorv1(a,a+len1);

vectorv2(b,b+len2);

int aa=max(a[0],a[1]);

vector::iterator ite=max_element(v1.begin(),v1.end());

return 0;

}

5.merge 函式:合併兩個有序序列,並存放到另外乙個序列中。

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

void pp(int i)

6.mismatch 函式:並行的比較兩個序列,指出第乙個不匹配的位置,它返回一對 iterator ,標誌第乙個不匹配的元素位置。如果都匹配,返回每個容器的 last 。

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

void pp(int i)

與之完全相反的函式還有prev_permutation)

本函式源於:

int main()

輸出:1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 188

8.nth_element函式:將範圍內的序列重新排序重小到大排序。

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

void pp(int i)

結果v1的順序:0 2 3 9 10 8 4,該函式是利用堆排序來進行的,

v1.begin()+len1/2-v1begin()個數會被排好序,前面的v1.begin()+len1/2-v1begin()個資料均小於後面的資料。

10.partial_sort_copy :與 partial_sort 相同,除了將經過排序的序列複製到另外乙個容器。

#include #include#include #include//演算法

#include#include //定義自己的模板類

using namespace std;

void pp(int i)

STL標準模板庫介紹

1.stl介紹 標準模板庫stl是當今每個從事c 程式設計的人需要掌握的技術,所有很有必要總結下 stl的最大特點就是 資料結構和演算法的分離,非物件導向本質。訪問物件是通過象指標一樣的迭代器實現的 容器是象鍊錶,向量之類的資料結構,並按模板方式提供 演算法是函式模板,用於操作容器中的資料。由於st...

C 標準模板庫(STL介紹) string

string str1 ab str2 xy string str str1 str2 比較規則是字典序 方法一 string str abcxyz str2 opq str.insert 3 str2 輸出 abcopqxyz 方法二 string str abcxyz str2 opq str....

STL 標準模板庫)

此篇只是乙個目錄,將分成單篇去完成 stl 主要有三個部分組成 容器,迭代器,演算法。順序容器 向量 vector 雙端佇列 dequeue 表 list ps copy 方法 關聯容器 集合 set 多重集合 multiset 對映 map 多重對映 multimap 容器介面卡 棧 stack ...