C++标准库之算法库

目录

1.不修改序列的操作
2.修改序列的操作
3.划分操作
4.排序操作
5.二分搜索操作(在已排序范围上)
6.集合操作(在已排序范围上)
7.堆操作
8.最小/最大操作
9.比较操作
10.排列操作
11.数值运算

1.不修改序列的操作 ^

  • all_of,any_of和none_of:判断一定范围内,是否全部,存在或不存在元素。
  • for_each:将一个函数应用于某一范围的元素
  • count和count_if:返回满足指定判别的元素数
  • mismatch:查找两个范围第一个不同元素的位置
  • find,find_if和find_if_not:查找满足特定条件的第一个元素
  • find_end:查找一定范围内最后出现的元素序列
  • find_first_of:查找元素集合中的任意元素
  • adjacent_find:查找彼此相邻的两个相同(或其它的关系)的元素
  • search:查找一个元素区间
  • search_n:在区间中搜索连续一定数目次出现的元素
  • #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    int main()
    {
        vector<int> ivec{ 1,2,2,4,5,6,7,8,9,10 };
        vector<int> v{ 5,6 ,7,8,9,10 };
        //判断容器内是否所有元素都满足条件
        if (all_of(ivec.begin(), ivec.end(), [](int i) {
        return i < 20; }))
            cout << "容器内所有元素都满足条件" << endl;
        //判断容器内是否有元素满足条件
        if(any_of(ivec.begin(),ivec.end(),[](int i){
        return i>9;}))
            cout << "容器内有任意一个元素满足条件" << endl;
        //判断容器内是否所有的元素都不满足条件
        if (none_of(ivec.begin(), ivec.end(), [](int i) {
        return i > 10; }))
            cout << "容器内所有元素都不满足条件" << endl;
        //遍历容器内元素
        for_each(ivec.begin(), ivec.end(), [](const int& n) { cout << n << " "; });
        cout << endl << "返回满足条件的元素个数:" << endl;
        cout << count(ivec.begin(), ivec.end(), 5) << endl;
        cout << count_if(ivec.begin(), ivec.end(), [](int i) {
        return i < 4; }) << endl;
        cout << "返回一个pair对象,first为第一个不匹配元素的迭代器,second为第一个匹配的元素的迭代器:" << endl;
        cout << *mismatch(ivec.begin(), ivec.end(), v.begin(), v.end()).first << endl;
        cout << *mismatch(ivec.begin(), ivec.end(), v.begin(), v.end()).second << endl;
        cout << "返回满足条件的第一个元素的迭代器:" << endl;
        cout << *find(ivec.begin(), ivec.end(), 5) << endl;
        cout << *find_if(ivec.begin(), ivec.end(), [](int i) {
        return i > 5; })<<endl;
        cout << "返回不满足条件的第一个元素的迭代器" << endl;
        cout << *find_if_not(ivec.begin(), ivec.end(), [](int i) {
        r
  • 5
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值