C++ Primer 学习中。。

简单记录下我的学习过程 (代码为主)

count 、 count_if

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;/***********************
count
count_if
关联容器的等效成员函数set.countmultiset.countmap.countmultimap.count
************************/
/***********************  std::count:****************************************
template <class InputIterator, class T>typename iterator_traits<InputIterator>::difference_typecount ( ForwardIterator first, ForwardIterator last, const T& value );
//eg:
template <class InputIterator, class T>ptrdiff_t count ( InputIterator first, InputIterator last, const T& value )
{ptrdiff_t ret=0;while (first != last) if (*first++ == value) ++ret;return ret;
}
*******************************************************************************//***********************  std::count_if:****************************************
template <class InputIterator, class Predicate>typename iterator_traits<InputIterator>::difference_typecount_if ( ForwardIterator first, ForwardIterator last, Predicate pred );
//eg:
template <class InputIterator, class Predicate>ptrdiff_t count_if ( InputIterator first, InputIterator last, Predicate pred )//pred 为函数or函数对象
{ptrdiff_t ret=0;while (first != last) if (pred(*first++)) ++ret;return ret;
}
*******************************************************************************///奇数
bool IsOdd (int i)
{return i&1;
}int main()
{int mycount;// counting elements in array:int myints[] = {10,20,30,30,20,10,10,20};   // 8 elementsmycount = (int) count (myints, myints+8, 10);cout << "10 appears " << mycount << " times.\n";// counting elements in container:vector<int> myvector (myints, myints+8);mycount = (int) count (myvector.begin(), myvector.end(), 20);//有几个20cout << "20 appears " << mycount  << " times.\n";/****************Output:10 appears 3 times.20 appears 3 times.****************///    vector<int> myvector;myvector.clear();for (int i=1; i<10; i++) myvector.push_back(i); // myvector: 1 2 3 4 5 6 7 8 9cout<<"\nmyvector: 1 2 3 4 5 6 7 8 9 \n";
//    mycount = (int) count_if (myvector.begin(), myvector.end(), IsOdd);mycount = (int) count_if (myvector.begin(), myvector.end(), bind2nd(modulus<int>(),2));//表示param1 % 2cout << "myvector contains " << mycount  << " odd values.\n";//奇数
//  假设求偶数的个数                                            not1,1表示一个參数取反mycount = (int) count_if (myvector.begin(), myvector.end(), not1(bind2nd(modulus<int>(),2)));//表示!(param1 % 2)cout << "myvector contains " << mycount  << " even values.\n";//偶数/****************Output:myvector contains 5 odd values.****************/
//                                               函数适配器  函数对象
//         bind2nd(op,value);表示绑定第二个数                   param1 > 4  这里表示统计大于4的个数mycount=count_if(myvector.begin(),myvector.end(),bind2nd(greater<int>(),4));cout<<"有"<<mycount<<"个数大于4"<<endl;
//拓展练习                                                      4 > param2mycount=count_if(myvector.begin(),myvector.end(),bind1st(greater<int>(),4));cout<<"有"<<mycount<<"个数小于4"<<endl;
//                                                              4 < param2mycount=count_if(myvector.begin(),myvector.end(),bind1st(less<int>(),4));cout<<"有"<<mycount<<"个数大于4"<<endl;
//                                                              param1 >= 4mycount=count_if(myvector.begin(),myvector.end(),bind2nd(greater_equal<int>(),4));cout<<"有"<<mycount<<"个数大于等于4"<<endl;
//                                                              param1 <= 4mycount=count_if(myvector.begin(),myvector.end(),bind2nd(less_equal<int>(),4));cout<<"有"<<mycount<<"个数小于等于4"<<endl;/****关联容器****/multiset<int> ms(myvector.begin(),myvector.end());ms.insert(myvector.begin(),myvector.begin()+6);ms.insert(myvector.begin(),myvector.begin()+4);ms.insert(myvector.begin(),myvector.begin()+2);ms.insert(1);multiset<int>::iterator ims=ms.begin();while(ims!=ms.end()){cout<<*ims++<<" ";}cout<<endl;//两种方法求1的个数int cnt=count(ms.begin(),ms.end(),1);//全部容器适用可是比較慢些cout<<"multiset里有"<<cnt<<"个1."<<endl;cnt=ms.count(1);//关联容器专享   set已经排序能够高速计数cout<<"multiset里有"<<cnt<<"个1."<<endl;return 0;
}

STL_算法_元素计数(count、count_if)相关推荐

  1. STL_算法_区间的比較(equal、mismatch、 lexicographical_compare)

    C++ Primer 学习中.. . 简单记录下我的学习过程 (代码为主) //全部容器适用 equal(b,e,b2)       //用来比較第一个容器[b,e)和第二个容器b2开头,是否相等 e ...

  2. sqlserver 根据数组排序_看动画学算法之:排序-count排序

    简介 今天我们介绍一种不需要作比较就能排序的算法:count排序. count排序是一种空间换时间的算法,我们借助一个外部的count数组来统计各个元素出现的次数,从而最终完成排序. count排序的 ...

  3. STL_算法(25)_逆转和旋转 revers() 、reverse_copy()、rotate()、rotate_copy()、

    STL_算法(25)_逆转和旋转 revers() . reverse_copy(). rotate(). rotate_copy(). STL变序性算法 revers() . reverse_cop ...

  4. python中满足条件相加_符合Python中特定条件的元素计数

    在本文中,我们将看到如何从Python列表中获取一些选定的元素.因此,我们需要设计一些条件,并且仅应选择满足该条件的元素并打印其计数. 求和 在这种方法中,我们有条件地选择元素并使用一些元素来获取它们 ...

  5. 蝴蝶优化算法_腾讯机智团队分享--AllReduce算法的前世今生

    从事分布式深度学习相关工作的同学,应该都频繁地用到了AllReduce(规约)操作. 图1 AllReduce的示意图 但是对于训练框架中集成的AllReduce相关操作,其背后实现的原理是什么? 除 ...

  6. java 线性的排序算法_数据结构之排序算法Java实现(9)—— 线性排序之 基数排序算法...

    基数排序算法是计数排序的延伸,计数排序会造成很大的空间浪费,但基数排序法是对位数进行排序,适合于位数之间相差较大的情况,废话不多说,直接上代码: 升序排序法: /** * 基数排序法 * 升序排列 * ...

  7. JVM上篇_15-垃圾回收相关算法_尚硅谷

    1 垃圾标记阶段的算法值引用计数算法 垃圾标记阶段:对象存活判断 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象.只有被标记为 ...

  8. 典型的Top K算法_找出一个数组里面前K个最大数

    原文 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入 ...

  9. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

最新文章

  1. 政府安全资讯精选 2017年第六期 车联网和移动安全可能成为未来监管重点
  2. 2019蓝桥杯省赛---java---B---1(组队)
  3. 2016/06/22 中色启动筹码分析作业
  4. python生成器迭代_python中的生成器和迭代器
  5. 听 Fabien Potencier 谈Symfony2 之 《What is Symfony2 ?》
  6. 如何检查PHP数组是关联数组还是顺序数组?
  7. weblogic使用脚本部署
  8. tp3.2 配置相关说明
  9. phpspider 爬取汉谜网
  10. 数据通信与计算机网络
  11. Python熵权法确定权重
  12. 不显示BOM清单的版本
  13. 机智云——燃烧激情,点燃梦想,创业维艰,砥砺前行
  14. Unity Shader - shader forge - #pragma only_renderers 和 exclude_renderers - 导致像素全黑
  15. 在sagemath中运行python文件
  16. ant design pro v5 之 ProForm自定义表单项
  17. miui7 android系统版本,miui7系统
  18. matlab求梯度的原理,matlab 梯度计算原理
  19. ArcGIS JavaScript for API(003):geojsonlayer
  20. Springboot设置多数据源,随时切换

热门文章

  1. php pdo dblib,PHP DBlib PDO问题
  2. C++安全方向(三):3.8 openssl单项散列章节总结
  3. jsp中有比nbsp更好的吗_直线导轨有不锈钢的吗?雅威达告诉您
  4. 拉普拉斯算子属于卷积方法吗_2020 年 GNN 开卷有益与再谈图卷积
  5. android关键应用程序,Android应用程序基础.pdf
  6. mysql随机查询多条记录表_MySQL 随机查询表中N条记录
  7. SQLAlchemy Tutorial
  8. Web_audio_spatialization_basics
  9. MongoDB Project Fields
  10. linux 命令行图形界面切换