STL簡單函式介紹

2021-10-19 11:50:08 字數 1404 閱讀 7410

unique 函式

以下的內容主要來介紹stl中的常見函式,也就是包含於algorithm標頭檔案內的部分簡單演算法函式。我的自學筆記內容可能並不深入,因此歡迎各位大佬提出建議!在此感謝啦or2

sort 函式是進行陣列排序的函式,其排序時間複雜度平均為n

log⁡

nn\log _n

nlogn​

,也就是與快排類似。但sort 函式在實際操作中較手寫快排相對更快。因此還是使用sort 比較方便。

sort 函式有2或3個引數。其中前兩個引數表示陣列需要排序的起始部分和結束部分的位址,最後乙個可以選擇加入的引數是比較方式的函式。如果不加入,則預設採用公升序排序。當然,我們也可以這麼寫,來做到公升序和降序排序。

sort

(a,a+n,std::less<

int>()

);//公升序排序

sort

(a,a+n,std::greater<

int>()

);//降序排序

在上面的**中應當注意的還有,a+n表示的是指標加法,也就是a[0]之後的n個數的位址,即&a[n]。即 sort(a,a+n); 與 sort(&a[0],&a[n]); 等價。

unique 函式是乙個用來在陣列中去除重複元素的函式,返回值是去重之後的尾位址

首先應當注意的是,unique 函式的作用機制是比較陣列中的相鄰兩個資料,如果兩者相同則保留乙個。因此,使用unique 函式之前必須先進行排序

另外,值得注意的是unique 函式不會把原來陣列「多佔」的位置進行初始化或清空,而是讓其保留了一些不知**的資料(沒有深究unique 函式的底層嗚嗚嗚)。但這些資料並不是與儲存的資料組合在一起並不會構成原有的陣列集合,因此不能說unique 函式會把重複的資料放在陣列末尾!

最後來看乙個愚蠢的例子:

#include

#include

#define emm 11

using

namespace std;

intmain()

;int n = emm;

sort

(a,a+n)

; n =

unique

(a,a+n)

- a;

cout

int i=

0;i)printf

("%d "

,a[i]);

return0;

}

輸出結果為:

812

3567

8978

9

暫時結束,隨學隨更233333

C 的STL之仿函式簡單介紹

include include include 演算法 include 仿函式 using namespace std bool less3 int x int main void 仿函式 繫結函式 第乙個大於30的數字 auto ifind find if myvecyor.begin myvec...

C 之STL庫簡單介紹

1.sort 可以自己定義新的結構體陣列排序,sort第三個引數可以設定為根據哪個值排序 int a int n sizeof a sizeof int sort a,a n for int i 0 i2.string string s 46237879426 排序 sort s.begin s.e...

STL仿函式簡單總結

c 相對於c語言來說,有兩個重點,1.物件導向特性 2.函式模板 泛型程式設計。對於stl中的6大元件 容器 演算法 迭代器 仿函式 介面卡 空間配置器。仿函式的用法比較多樣化,下面簡單總結一下。使用 outit copy if init first,init last,outit dest,pr ...