C 提高 STL中常用的查詢演算法

2021-09-29 16:23:16 字數 2585 閱讀 1774

在iterator對標識元素範圍內,查詢一對相鄰重複元素,找到則返回指向這對元素的第乙個元素的迭代器。否則返回past-the-end。

vector<

int> vecint;

vecint.

push_back(1

);vecint.

push_back(2

);vecint.

push_back(2

);vecint.

push_back(4

);vecint.

push_back(5

);vecint.

push_back(5

);vector<

int>

::iterator it =

adjacent_find

(vecint.

begin()

, vecint.

end())

;//*it == 2

在有序序列中查詢value,找到則返回true。注意:在無序序列中,不可使用。

set<

int> setint;

setint.

insert(3

);setint.

insert(1

);setint.

insert(7

);setint.

insert(5

);setint.

insert(9

);bool bfind =

binary_search

(setint.

begin()

,setint.

end(),

5);

利用等於操作符,把標誌範圍內的元素與輸入值比較,返回相等的個數。

vector<

int> vecint;

vecint.

push_back(1

);vecint.

push_back(2

);vecint.

push_back(2

);vecint.

push_back(4

);vecint.

push_back(2

);vecint.

push_back(5

);int icount =

count

(vecint.

begin()

,vecint.

end(),

2);//icount==3

假設vector<

int> vecinta,vecinta包含1,3

,5,7

,9元素

//先定義比較函式

bool

greaterthree

(int inum)

else

}int icount =

count_if

(vecinta.

begin()

, vecinta.

end(

), greaterthree)

;//此時icount == 4

-	find:  利用底層元素的等於操作符,對指定範圍內的元素與輸入值進行比較。

- 當匹配時,結束搜尋,返回該元素的迭代器。

-- equal_range: 返回一對iterator,第乙個表示lower_bound,

- 第二個表示upper_bound。

vector<

int> vecint;

vecint.

push_back(1

);vecint.

push_back(3

);vecint.

push_back(5

);vecint.

push_back(7

);vecint.

push_back(9

);vector<

int>

::iterator it =

find

(vecint.

begin()

, vecint.

end(),

5);//*it == 5

find_if:使用輸入的函式代替等於操作符執行find。返回被找到的元素的迭代器。

假設vector<

int> vecinta,vecinta包含1,3

,5,3

,9元素

vector<

int>

::it =

find_if

(vecint.

begin()

,vecint.

end(

),greaterthree)

;此時 *it==3,

*(it+1)

==5,*

(it+2)

==3,*

(it+3)

==9

STL中常用的查詢演算法

adjacent find 在iterator對標識元素範圍內,查詢一對相鄰重複元素,找到則返回指向這對元素的第乙個元素的迭代器。否則返回past the end。vectorvecint vecint.push back 1 vecint.push back 2 vecint.push back ...

C 提高程式設計 5 STL 常用演算法(查詢演算法)

5.2 常用查詢演算法 5.1 find includeusing namespace std include include include 常用查詢容器 find void test1 查詢容器中 是否有5 這個元素 vector iterator pos find v.begin v.end ...

STL中常用的排序演算法

merge 例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素 vecintc.resize 9 擴大容量 merge vecinta.begin vecinta.end vecintb....