STL中find和sort的用法總結

2022-07-24 05:21:14 字數 1269 閱讀 5231

stl 提供能在各種容器中通用的演算法(大約有70種),如插入、刪除、查詢、排序等。

許多演算法操作的是容器上的乙個區間(也可以是整個容器),因此需要兩個引數,乙個是區間起點元素的迭代器,另乙個是區間終點元素的後面乙個元素的迭代器。例如,排序和查詢演算法都需要這兩個引數來指明待排序或待查詢的區間。

有的演算法返回乙個迭代器。例如,find演算法在容器中查詢乙個元素,並返回乙個指向該元素的迭代器。

演算法可以處理容器,也可以處理普通的陣列

stl 中的大部分常用演算法都在標頭檔案** algorithm** 中定義。此外,標頭檔案 numeric 中也有一些演算法。

find模板原型如下:

template inlt find(init first, init last, const t& val);
其功能可以是在迭代器 first、last 指定的容器的乙個區間 [first, last) 中,按順序查詢和 val 相等的元素。如果找到,就返回該元素的迭代器;如果找不到,就返回 last

**[first, last) **這個區間是乙個左閉右開的區間,即 last 指向的元素其實不在此區間內。

find使用示例如下:

int arr[4] = ;

vectora;

vector::iterator pr;

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

//使用find演算法

vector::iterator pfind;

//在a中查詢3

pfind = find(a.begin(),a.end(),3);

if(*pfind == 3)

cout << "1) " << "success"《輸出結果是:

1) success

2) not success

3) not success

sort預設使用公升序排列

sort演算法原型

templatevoid sort(_randit first, _randit last);
** sort演算法使用示例**

int a[4] = ;

sort(a, a+4);

STL中的sort函式

b站二面時,面試官問了乙個問題,沒打出來感覺挺虧的。問題是 stl中的sort函式用的什麼排序演算法?這個問題我之前看面經的時候,看了一眼,但是當時沒有仔細研究過。大致知道裡面用了快速排序。stl的sort 演算法,資料量大時採用quick sort,分段遞迴排序。一旦分段後的資料量小於某個閾值,為...

STL中的sort演算法

上圖表明了關於sort演算法的兩大要點 sort randomacessiterator it1,randomacessiterator it1 即,sort演算法的輸入形參是兩個,而且必須都是隨機迭代器 貌似只有vector和deque滿足?sort預設的排序結果是從小到大。關於stl的sort演...

STL中sort 函式的用法

在做acm題的過程中,演算法中經常會用到排序的處理,自己寫排序有點麻煩,最主要是記不住排序演算法的 stl中的sort函式有兩種 template ranit void sort ranit fist,ranit last template ranit,class pred void sort ra...