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