STL 演算法與迭代器

2021-09-24 03:24:42 字數 2118 閱讀 1697

stl_演算法

演算法是stl的重要組成部分。stl提供了大約100個實現演算法的模板函式,使用者可以通過呼叫演算法模板完成所需的功能。

一般來說,stl中的演算法部分主要由標頭檔案< algorithms>,< numeric>,< functional>組成。其中,標頭檔案< algorithms>由模板函式組成,常見的函式涉及比較,交換,查詢,排序等。

sort在< algorithm>庫裡面,原型如下:

下面是乙個使用stl中排序演算法的例項:

sort在< algorithm>庫裡面,原型如下:

template

<

class

randomaccessiterator

>

void sort ( randomaccessiterator first, randomaccessiterator last )

;template

<

class

randomaccessiterator

,class

compare

>

void sort ( randomaccessiterator first, randomaccessiterator last, compare comp )

;

sort函式有兩種形式,一種有兩個引數,一種有三個引數,sort的前兩個引數是起始位址和終止位址,表示對a[0] a[1] a[2] … a[n-1] 排序。

sort函式中:返回值為false,交換;為true,不交換。第三個引數是當你需要按照某種特定方式進行排序時,你需要給sort指定比較函式:

bool cmp(int a,int b)

//這裡過載了《運算子,使類之間的first,second也可以用" < "比較大小

bool

operator

<

(const myclass& m)

const

//bool型別,只返回0或1};

bool

less_second

(const myclass& m1,

const myclass& m2)

intmain()

for(

int i=

0;isize()

;i++

)//列印容器內的資訊

sort

(vect.

begin()

,vect.

end())

;//呼叫排序演算法,傳遞了向量開始與結束元素的游標

cout<<

"after sorted by first:"

<

for(

int i=

0;isize()

;i++)

cout<<

"after sorted by second:"

<

sort

(vect.

begin()

,vect.

end(

),less_second)

;for

(int i=

0;isize()

;i++

)return0;

}執行結果:

迭代器迭代器實際上一種泛化指標,如果乙個迭代器指向了容器中的某一成員,那麼迭代器可以通過自增和自減來遍歷容器中的所有成員。迭代器是聯絡容器和演算法的媒介,是演算法操作容器的介面。

簡單來說,stl提供的所有演算法幾乎都是通過迭代器訪問元素序列進行工作的,每乙個容器都定義了它本身所專有的迭代器,用以訪問容器中的元素。

stl中的迭代器主要由標頭檔案< utility>,< iterator>,< memory>組成。其中,< utility>包括了貫穿使用在stl中的幾個模板的宣告,< iterator>標頭檔案中提供了迭代器使用的許多方法。< memory>標頭檔案中的主要部分是模板類allocator,它負責產生所有容器中的預設分配器。

STL 容器與迭代器

迭代器 迭代器是泛化的指標 但並不是指標 用法和指標類似,利用迭代器對容器中的元素序列的操作。格式舉例list itrerator it 迭代器本身是乙個物件,這個物件可以遍歷stl容器內部全部的物件,它能夠反覆地對stl容器內容進行訪問。迭代器所提供的基本操作如下所示 a.獲取當前被指向的元素,用...

STL迭代器技術

stl迭代器技術 c stl和各種容已提供了自己的迭代器,如輸入迭代器,輸出迭代器,前向迭代器,雙向迭代器,隨機迭代器。但是 stl在已有迭代器的基礎上,仍然定義了另外一些迭代器,以簡化某些情況下的操作。一般在 stl iterator.h 檔案中提供。1 輸入流迭代器 istream iterat...

STL總結 迭代器

所有容器都定義了各自的迭代器 迭代器是乙個物件,它的工作是在容器中挑選元素,並將其呈現給迭代器使用者。迭代器分類 input迭代器 向前讀取 istream output迭代器 向前寫入 ostream forward迭代器 向前讀取和寫入 bidirectional迭代器 向前和向後讀取和寫入 l...