C++ STL 常用查找算法
C++ STL 常用查找算法
?
adjacent_find()
在iterator對標(biāo)識元素范圍內(nèi),查找一對相鄰重復(fù)元素,找到則返回指向這對元素的第一個元素的迭代器。否則返回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
?
binary_search
在有序序列中查找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);
?
count()
利用等于操作符,把標(biāo)志范圍內(nèi)的元素與輸入值比較,返回相等的個數(shù)。
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
?
count_if()
假設(shè)vector<int> vecIntA,vecIntA包含1,3,5,7,9元素
//先定義比較函數(shù)
bool GreaterThree(int iNum)
{
? ? ? ?if(iNum>=3)
? ? ? ?{
? ? ? ?? ? ? ?return true;
? ? ? ?}
? ? ? ?else
? ? ? ?{
? ? ? ?? ? ? ?return false;
? ? ? ?}
}
int iCount = count_if(vecIntA.begin(), vecIntA.end(), GreaterThree); //此時iCount == 4
?
find()
find: 利用底層元素的等于操作符,對指定范圍內(nèi)的元素與輸入值進(jìn)行比較。當(dāng)匹 配時,結(jié)束搜索,返回該元素的迭代器。
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_if: 使用輸入的函數(shù)代替等于操作符執(zhí)行find。返回被找到的元素的迭代器。
假設(shè)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?
?
總結(jié)
以上是生活随笔為你收集整理的C++ STL 常用查找算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《javascript高级程序设计》笔记
- 下一篇: C#中数据类型的安全转换(is,as)