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...