温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++ STL常用算法有哪些

发布时间:2021-11-29 15:31:45 来源:亿速云 阅读:146 作者:iii 栏目:大数据

本篇内容介绍了“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常用算法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI