• 通过仿函数for_each操作

     vector<int> myv{ ,,,, };
    list<double> db{ 1.1,2.2,3.3,4.4,5.5 }; //循环算法,算法的泛型
    print p = for_each(db.begin(), db.end(), print());
    cout << p.count << endl;
  • find_if查找算法
     //查找算法
    auto it = find(myv.begin(), myv.end(), );
    cout << *it << endl;
  • find_if与lambda结合
     //寻找第一个偶数的位置,返回0就是找到的
    auto it = find_if(myv.begin(), myv.end(), [](int x)->bool
    {
    if (x % == )
    {
    return ;
    }
    else
    {
    return ;
    }
    }); if (it != myv.end())
    {
    cout << *it << " pos=" << it - myv.begin() << endl;
    }
  • adjacent_find处理相邻的两个数据
     list <int> mylist{ ,,,,,,, };
    //查找相邻的两个元素相等的位置(adjacent_find处理相邻的两个数据)
    auto it = adjacent_find(mylist.begin(), mylist.end());
    if (it != mylist.end())
    {
    cout << *it << endl;
    it++;
    cout << *it << endl;
    }
  • adjacent_find与lambda结合
     //寻找第一个奇偶性不同的
    auto it = adjacent_find(mylist.begin(), mylist.end(), [](int x,int y)->bool
    {
    if ((x - y) % == )
    {
    return ;
    }
    else
    {
    return ;
    }
    });
    if (it != mylist.end())
    {
    cout << *it << endl;
    it++;
    cout << *it << endl;
    }
  • find_first_of寻找第一个集合在第二个集合中出现的第一个数据
     char *str1 = "";
    char *str2 = "abcdefg123";
    //寻找在string1中第一个出现在string2的字符
    char *p = find_first_of(str1, str1 + strlen(str1), str2, str2 + strlen(str2));
    cout << *p << endl; vector<int> myint1{ ,,,, };
    vector<int> myint2{ ,,,, };
    auto it = find_first_of(myint1.begin(), myint1.end(), myint2.begin(), myint2.end());
    cout << *it << endl;
  • count与count_if查询数据个数
     vector<int> myint{ ,,,,,,,,, };
    int count1 = count(myint.begin(), myint.end(), );
    cout << count1 << endl; //查询所有小于4的元素的个数
    int count2 = count_if(myint.begin(), myint.end(), [](int x)
    {
    if (x < )
    {
    return ;
    }
    else
    {
    return ;
    }
    });
    cout << count2 << endl;
  • mismatch判断两个集合是否相等
     vector<int> myint1{ ,,,,,,,,, };
    vector<int> myint2{ ,,,,,,,,, }; auto it = mismatch(myint1.begin(), myint1.end(), myint2.begin());
    if (it.first == myint1.end() && it.second == myint2.end())
    {
    cout << "相等" << endl;
    }
    else
    {
    //first是第一个容器不匹配的位置(可能为空),second是第二个容器不匹配的位置(可能为空)
    cout << "不相等" << endl;
    cout << *(it.first) <<" " << *(it.second) << endl;
    }
     char *s1[] = { "abc","acv","adf","oop" };
    char *s2[] = { "abc","acv","adf","oop","" };
    auto it = mismatch(s1, s1 + , s2, [](const char* str1,const char* str2)
    {
    if (strcmp(str1, str2) == )
    {
    return ;
    }
    else
    {
    return ;
    }
    }); if (it.first == s1 + sizeof(s1)/sizeof(s1[]) && it.second == s2 + sizeof(s2) / sizeof(s2[]))
    {
    cout << "相等" << endl;
    }
    else
    {
    //first是第一个容器不匹配的位置(可能为空),second是第二个容器不匹配的位置(可能为空)
    cout << "不相等" << endl;
    //cout << *(it.first) << " " << *(it.second) << endl;
    }
  • equal判断是否是一样的集合
    
         vector<int> myv1{ ,,,, };
    vector<int> myv2{ -,,-,,- }; //判断绝对值知否相等
    if (equal(myv1.begin(), myv1.end(), myv2.begin(), [](int a, int b) ->bool
    {
    if (a == abs(b) || b == abs(a))
    {
    return ;
    }
    else
    {
    return ;
    }
    }))
    {
    cout << "相等" << endl;
    }
    else
    {
    cout << "不相等" << endl;
    }
  • search判断有没有连续一样的部分
     vector<int> myv1{ , };
    vector<int > myv2{ ,,,, }; //判断有没有连续相等的子集
    auto it = search(myv1.begin(), myv1.end(), myv2.begin(), myv2.end()); if (it == myv1.end())
    {
    cout << "是子集" << endl;
    }
    else
    {
    cout << "不是子集" << endl;
    }
  • search_n判断有没有连续一样的数据
     vector<int> myv1{ ,,,,,, };
    
         //判断有没有连续相等的数据
    auto it = search_n(myv1.begin(), myv1.end(),, ); if (it == myv1.end())
    {
    cout << "有" << endl;
    }
    else
    {
    cout << "没有" << endl;
    }
  • 从反向寻找一个集合在另一个集合中出现的位置
     vector<int> myv2{ ,,,,,, };
    vector<int> myv3{ , };
    //在myv2中从后往前找myv3所在的位置
    auto it = find_end(myv2.begin(), myv2.end(), myv3.begin(), myv3.end()); if(it != myv2.end())
    {
    cout << *it << " " << it - myv2.begin() << endl;
    }

25.不改变原生数据的STL algorithm的更多相关文章

  1. SharePoint 2010 升级到2013时间 为了确保用户可以连接,但无法改变升级数据

    SharePoint 2010 升级到2013时间 为了确保用户可以连接,但无法改变升级数据 我总结的步骤 红色请注意它们的含义. 步骤1:连接到SQL DBS 上的SharePoint 2010数据 ...

  2. 【ArcGIS 10.2新特性】ArcGIS 10.2将PostgreSQL原生数据发布为要素服务

    1.ArcGIS 10.2支持原生数据发布为要素服 有没有将自己已有的空间数据发布为要素服务的需求?有没有将非Esri空间数据类型的数据作为服务在Web端展示的需求?     ArcGIS 10.2 ...

  3. 14Flutter StatefulWidget有状态组件、页面上绑定数据、改变页面数据、实现计数器功能、动态列表

    /** * Flutter StatefulWidget有状态组件.页面上绑定数据.改变页面数据 * 在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/Stat ...

  4. 使用 Iceberg on Kubernetes 打造新一代云原生数据湖

    背景 大数据发展至今,按照 Google 2003年发布的<The Google File System>第一篇论文算起,已走过17个年头.可惜的是 Google 当时并没有开源其技术,& ...

  5. Fluid + GooseFS 助力云原生数据编排与加速快速落地

    前言 Fluid 作为基于 Kubernetes 开发的面向云原生存算分离场景下的数据调度和编排加速框架,已于近期完成了 v0.6.0 版本的正式发布.腾讯云容器 TKE 团队一直致力于参与 Flui ...

  6. STL algorithm 头文件下的常用函数

    algorithm 头文件下的常用函数 1. max(), min()和abs() //max(x,y)和min(x,y)分别返回x和y中的最大值和最小值,且参数必须时两个(可以是浮点数) //返回3 ...

  7. Flutter StatefulWidget 有状态组件、页面上绑定数据、改变页面数据

    在 Flutter 中自定义组件其实就是一个类,这个类需要继承 StatelessWidget/StatefulWidget. StatelessWidget 是无状态组件,状态不可变的 widget ...

  8. php 封装原生数据导入的方法(csv文件格式)

    //前端---部分代码 <form class="form-inline" style="margin-top: 20px" method="p ...

  9. StatelessWidget 无状态组件 StatefulWidget 有状态组件 页面上绑定数据、改变页面数据

    一.Flutter 中自定义有状态组件 在 Flutter 中自定义组件其实就是一个类,这个类需要继承 StatelessWidget/StatefulWidget. StatelessWidget ...

随机推荐

  1. 省赛i题/求1~n内全部数对(x,y),满足最大公约数是质数的对数

    求1~n内全部数对(x,y),gcd(x,y)=质数,的对数. 思路:用f[n]求出,含n的对数.最后用sum[n]求和. 对于gcd(x,y)=a(设x<=y,a是质数),则必有gcd(x/a ...

  2. 百度地图-----&gt;地图类型、定位模式、实时交通、我的位置、加入覆盖物、覆盖物详情及提示

    在百度地图开发平台 http://developer.baidu.com/map/index.php? title=androidsdk 进行创建应用,获取应用的AK,在进行下载BaiduLBS_An ...

  3. android sudio 执行的中文是乱码解决方式

    1.File-->Setings-->查找file encodings 例如以下图 2.将 IDE Encoding .Project Encoding.Default encoding ...

  4. 创建一个web user control

    1.创建文件 添加,然后选择web user control 2.添加控件 在工具栏搜索button,然后拖动三个button上去 <%@ Control Language="C#&q ...

  5. linux 挂载存储步骤(以emc 5300为例)

    挂载存储有两种方式:光纤模式(hub卡)和iscsi (以太网).两者大体思路是一样的. 1.在应用服务器上安装hub卡,连接光纤到光纤交换机上: 2.在应用服务器安装hub卡驱动程序: 3.在存储上 ...

  6. B树索引与索引优化

    B树索引与索引优化 MySQL的MyISAM.InnoDB引擎默认均使用B+树索引(查询时都显示为“BTREE”),本文讨论两个问题: 为什么MySQL等主流数据库选择B+树的索引结构? 如何基于索引 ...

  7. 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘

    题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...

  8. vmware workstation中的NAT配置

    宿主机:win10: IP:192.168.1.101 GW:192.168.1.1 以太网2(VMNET8) IP:192.168.100.1 GW:nonevmware中的虚拟网络设置(NAT): ...

  9. 关于exsi的虚拟网络

    相关术语: VM Network 默认的网络 VSwitch   (默认)标准交换机 (exsi的内核中) Port groups  (用来定义各个不同vlan) DVSwitch分布式交换机(exs ...

  10. js 关于height()、innerHeight()、outerHeight()函数的区别