您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“C++ STL常用算法有哪些”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
##查找算法
####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(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()
利用等于操作符,把標(biāo)志范圍內(nèi)的元素與輸入值比較,返回相等的個數(shù)。
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),返回滿足條件的元素的數(shù)量。
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);// 偶數(shù)個數(shù)是 2;
####find
利用底層元素的等于操作符,對指定范圍內(nèi)的元素與輸入值進(jìn)行比較。當(dāng)匹配時,結(jié)束搜索,返回該元素的迭代器。
####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); //擴(kuò)大容量
merge(vecIntA.begin(),vecIntA.end(),vecIntB.begin(),vecIntB.end(),vecIntC.begin());
此時vecIntC就存放了按順序的1,2,3,4,5,6,7,8,9九個元素
####sort()
sort: 以默認(rèn)升序的方式重新排列指定范圍內(nèi)的元素。若要改排序規(guī)則,可以輸入比較函數(shù)。
random_shuffle()
random_shuffle: 對指定范圍內(nèi)的元素隨機(jī)調(diào)整次序。
“C++ STL常用算法有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。