本篇內容介紹了“C++ STL常用算法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
##查找算法
####adjacent_find()
在iterator對標識元素范圍內,查找一對相鄰重復元素,找到則返回指向這對元素的第一個元素的迭代器。否則返回past-the-end。
vector<int> vecInt; vecInt.push_back(1); vecInt.push_back(2); vecInt.push_back(3); vecInt.push_back(4); vecInt.push_back(5); vecInt.push_back(5); vector<int>::iterator it = adjacent_find(vecInt.begin(), vecInt.end());
####binary_search
在有序序列中查找value,找到則返回true。注意:在無序序列中,不可使用。
set<int> setInt; setInt.insert(2); setInt.insert(1); setInt.insert(8); setInt.insert(5); setInt.insert(9); bool bFind = binary_search(setInt.begin(),setInt.end(),8);
####count()
利用等于操作符,把標志范圍內的元素與輸入值比較,返回相等的個數。
vector<int> vecInt; vecInt.push_back(8); vecInt.push_back(2); vecInt.push_back(1); vecInt.push_back(4); vecInt.push_back(8); vecInt.push_back(6); int iCount = count(vecInt.begin(),vecInt.end(),8); //iCount==2
####count_if()
count_if 算法計算中的元素范圍 [first, last),返回滿足條件的元素的數量。
vector<int> vecInt; vecInt.push_back(3); vecInt.push_back(3); vecInt.push_back(1); vecInt.push_back(4); vecInt.push_back(8); vecInt.push_back(9); int count = count_if(vecInt.begin(), vecInt.end(), evenNumber);// 偶數個數是 2;
####find
利用底層元素的等于操作符,對指定范圍內的元素與輸入值進行比較。當匹配時,結束搜索,返回該元素的迭代器。
####equal_range:
返回一對iterator,第一個表示lower_bound,第二個表示upper_bound。
##查找算法
merge()
以下是排序和通用算法:提供元素排序策略
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.begin(),vecIntB.end(),vecIntC.begin());
此時vecIntC就存放了按順序的1,2,3,4,5,6,7,8,9九個元素
####sort()
sort: 以默認升序的方式重新排列指定范圍內的元素。若要改排序規則,可以輸入比較函數。
random_shuffle()
random_shuffle: 對指定范圍內的元素隨機調整次序。
“C++ STL常用算法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。