cb26a_c++_STL_算法_元素计数
所有容器都可以使用
count
count_if
关联容器的等效成员函数,容器自己的成员函数速度较快
1.set.count
2.multiset.count
3.map.count
4.multimap.count

error C2275: “std::greater<int>”: 将此类型用作表达式非法
少了括号:std::greater<int>()
error C3861: “bind2nd”: 找不到标识符
需要包含:#include <functional>//greater包含在里面,预定义的函数对象

预定义的函数对象配合预定义的函数适配器一起使用
bind2nd(greater<int>(), 3),
bind2nd--预定义的函数适配器
greater<int>()--预定义的函数对象

modulus<type>() 取模运算
not1(op),一个参数,返回结果真,假
not2(op),二个参数
*/

  1. /*cb26a_c++_STL_算法_元素计数
  2. 所有容器都可以使用
  3. count
  4. count_if
  5. 关联容器的等效成员函数,容器自己的成员函数速度较快
  6. 1.set.count
  7. 2.multiset.count
  8. 3.map.count
  9. 4.multimap.count
  10.  
  11. error C2275: “std::greater<int>”: 将此类型用作表达式非法
  12. 少了括号:std::greater<int>()
  13. error C3861: “bind2nd”: 找不到标识符
  14. 需要包含:#include <functional>//greater包含在里面,预定义的函数对象
  15.  
  16. 预定义的函数对象配合预定义的函数适配器一起使用
  17. bind2nd(greater<int>(), 3),
  18. bind2nd--预定义的函数适配器
  19. greater<int>()--预定义的函数对象
  20.  
  21. modulus<type>() 取模运算
  22. not1(op),一个参数,返回结果真,假
  23. not2(op),二个参数
  24. */
  25. #include <iostream>
  26. #include <algorithm>
  27. #include <vector>
  28. #include <set>
  29. #include <functional>//greater包含在里面
  30.  
  31. using namespace std;
  32.  
  33. //函数返回是bool,称为谓词
  34. bool isEven(int elem)
  35. {
  36. return elem % == ;
  37. }
  38.  
  39. int main()
  40. {
  41. vector<int> ivec;
  42. for (int i = ; i <= ; ++i)
  43. ivec.push_back(i);
  44. for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
  45. cout << *iter << endl;
  46.  
  47. int num;
  48. num = count(ivec.begin(), ivec.end(), );
  49. cout << "有 " << num << "个8" << endl;
  50.  
  51. int num2;
  52. num2 = count_if(ivec.begin(), ivec.end(), isEven);//调用iven函数,自己写的函数
  53. cout << "统计偶数的个数: " << num2 << endl;
  54.  
  55. num2 = count_if(ivec.begin(), ivec.end(), bind2nd(modulus<int>(),));//使用modulus取模运算,奇数时返回1,
  56. cout << "modulus方法-奇数的个数: " << num2 << endl;
  57.  
  58. num2 = count_if(ivec.begin(), ivec.end(), not1(bind2nd(modulus<int>(), )));//使用modulus取模运算,not1,取反,返回偶数,
  59. cout << "modulus方法-偶数的个数: " << num2 << endl;
  60. //函数适配器 函数对象
  61. //param1>param2
  62. num = count_if(ivec.begin(), ivec.end(), bind2nd(greater<int>(), ));
  63. //预定义的函数对象:https://blog.csdn.net/txwtech/article/details/104382505
  64. cout << "大于3的个数:" << num << endl;
  65.  
  66. cout << "multiset例子" << endl;
  67. multiset<int>mset;
  68. for (int i = ; i <= ; ++i)
  69. //mset.insert(i);
  70. mset.insert(mset.end(), i);
  71. mset.insert();
  72. mset.insert();
  73. for (multiset<int>::iterator iter = mset.begin(); iter != mset.end(); ++iter)
  74. cout << *iter << ' ';
  75. cout << endl;
  76.  
  77. num = count(mset.begin(), mset.end(), );
  78. cout << "统计7的个数:" <<num<< endl;
  79.  
  80. num = mset.count();//高效查找,二叉树,自动排序了的。
  81. cout << "mulset自己的count成员函数:个数:" << num << endl;
  82.  
  83. return ;
  84. }

cb26a_c++_STL_算法_元素计数的更多相关文章

  1. STL_算法_元素计数(count、count_if)

    C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) count . count_if #include<iostream> #include<cstdio&g ...

  2. cb51a_c++_STL_算法_根据第n个元素排序nth_element

    cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...

  3. cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort

    cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort sort(b,e) sort(b,e,p) stable_sort(b,e) stable_sort(b,e,p) ...

  4. cb37a-_c++_STL_算法_复制元素copy_copy_backward

    cb37a-_c++_STL_算法_复制元素copy_copy_backward copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝copy_backward()//向后copy 注意: ...

  5. cb50a_c++_STL_算法_局部排序partial_sort

    cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...

  6. cb43a_c++_STL_算法_删除_(1)remove_remove_if

    cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...

  7. cb36a_c++_STL_算法_区间的比较equal_mismatch_lexicographical_compare

    *cb36a_c++_STL_算法_区间的比较equal_mismatch_lexicographical_compare 区间:容器中的全部数据或者部分数据,都叫做区间 equal(b,e,b2), ...

  8. cb32a_c++_STL_算法_查找算法_(5)adjacent_find

    cb32a_c++_STL_算法_查找算法_(5)adjacent_findadjacent_find(b,e),b,begin(),e,end()adjacent_find(b,e,p),p-par ...

  9. cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition

    cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...

随机推荐

  1. ubuntu18.04.4安装k8s

    k8s部署 1.集群所有主机关闭swap sudo swapoff -a sudo sed -i 's/.*swap.*/#&/' /etc/fstab 如果重启后swap还是自动挂载执行sy ...

  2. 读Pyqt4教程,带你入门Pyqt4 _004

    在PyQt4教程的这部分中,我们将探讨应用中事件和信号的发生. 事件是GUI程序的重要部分,由用户或者系统产生.当我们调用应用的 exec_() 方法,应用进入主循环.主循环获取事件并把它们发往对象. ...

  3. Linux下db2V10.5命令行安装超详细图文教程(附下载地址)

    下载地址:https://pan.baidu.com/s/1GtF03x1FMF3IsGdSiBJu-g 提取码:8vfj 失效了发邮件:wells974@163.com 一.db2prereqche ...

  4. 关于String是值传递还是引用传递

    public class Itv { static String ss = "kkkkkk"; static String ss1 = new String("kkkkk ...

  5. Remote desktop cannot verify?教你如何应对

    远程桌面:IIS7远程桌面IIS7远程桌面管理工具(3389.vps.服务器批量管理.批量远程工具)简介: 1.批量管理WIN系列服务器,VPS,电脑.   2.批量导入服务器的IP,端口,账号和密码 ...

  6. Chisel3 - util - Queue

    https://mp.weixin.qq.com/s/vlyOIsQxR6bCqDDMtRQLLg   实现队列模块,先入先出(FIFO).   参考链接: https://github.com/fr ...

  7. 从按下url到显示页面

    从按下url到渲染页面流程图 处理输入信息 检查用户输入 当用户在地址栏中输入一个查询关键字时,地址栏会判断输入的关键字是搜索内容,还是请求的 URL.如果是搜索内容,地址栏会使用浏览器默认的搜索引擎 ...

  8. Entity FrameWork 实现分页

    SQl语句进行分页 SQL语句进行分页主要是应用Entity FrameWork的SqlQuery()传入SQL语句进行查询时分页. 效果展示. 页面代码展示,显示是用Repeater控件进行动态显示 ...

  9. Java实现 LeetCode 805 数组的均值分割 (DFS+分析题)

    805. 数组的均值分割 给定的整数数组 A ,我们要将 A数组 中的每个元素移动到 B数组 或者 C数组中.(B数组和C数组在开始的时候都为空) 返回true ,当且仅当在我们的完成这样的移动后,可 ...

  10. iOS-函数式编程 && 响应式编程概念

    作为一个iOS developer,那么你一定用过Masnory / SnapKit: Masonry是一个OC开发中,非常好用的自动布局的第三方框架: SnapKit是Masonry团队打造的swi ...