本篇内容介绍了“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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。