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),二个参数
*/

 /*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),二个参数
*/
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <functional>//greater包含在里面 using namespace std; //函数返回是bool,称为谓词
bool isEven(int elem)
{
return elem % == ;
} int main()
{
vector<int> ivec;
for (int i = ; i <= ; ++i)
ivec.push_back(i);
for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
cout << *iter << endl; int num;
num = count(ivec.begin(), ivec.end(), );
cout << "有 " << num << "个8" << endl; int num2;
num2 = count_if(ivec.begin(), ivec.end(), isEven);//调用iven函数,自己写的函数
cout << "统计偶数的个数: " << num2 << endl; num2 = count_if(ivec.begin(), ivec.end(), bind2nd(modulus<int>(),));//使用modulus取模运算,奇数时返回1,
cout << "modulus方法-奇数的个数: " << num2 << endl; num2 = count_if(ivec.begin(), ivec.end(), not1(bind2nd(modulus<int>(), )));//使用modulus取模运算,not1,取反,返回偶数,
cout << "modulus方法-偶数的个数: " << num2 << endl;
//函数适配器 函数对象
//param1>param2
num = count_if(ivec.begin(), ivec.end(), bind2nd(greater<int>(), ));
//预定义的函数对象:https://blog.csdn.net/txwtech/article/details/104382505
cout << "大于3的个数:" << num << endl; cout << "multiset例子" << endl;
multiset<int>mset;
for (int i = ; i <= ; ++i)
//mset.insert(i);
mset.insert(mset.end(), i);
mset.insert();
mset.insert();
for (multiset<int>::iterator iter = mset.begin(); iter != mset.end(); ++iter)
cout << *iter << ' ';
cout << endl; num = count(mset.begin(), mset.end(), );
cout << "统计7的个数:" <<num<< endl; num = mset.count();//高效查找,二叉树,自动排序了的。
cout << "mulset自己的count成员函数:个数:" << num << endl; return ;
}

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. Jumpserver-跳板机的搭建

    Jumpserver堡垒机 一.Jumpserver堡垒机概述-部署Jumpserver运行环境 01 跳板机概述 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登 ...

  2. Java线程的启动与中止

    一.线程与进程的关系 关于进程与线程,百度百科上是这样描述的: 进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 在当 ...

  3. Spark SQL源码解析(五)SparkPlan准备和执行阶段

    Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Spark SQL源码解析(三 ...

  4. [256个管理学理论]005.羊群效应(Herd Behavior)

    羊群效应(Herd Behavior) 来自于大洋彼岸的让你看不懂的解释: “羊群效应”,也叫“从众效应”,是个人的观念或行为由于真实的或想像的群体的影响或压力,而向与多数人相一致的方向变化的现象.表 ...

  5. 小谢第1问:为什么要写blog

    一直犹豫了好久,终于在csdn上弄好了自己的博客账号,感谢平台,以后在工作的过程中,遇到不懂得问题,解决后,会在这里记录下自己所遇到的问题

  6. ASP.NET Core 3.x API版本控制

    前言 一般来说需要更改我们API的时候才考虑版本控制,但是我觉得我们不应该等到那时候来实现它,我们应该有一个版本策略从我们应用程序开发时就开始制定好我们的策略,我们一直遵循着这个策略进行开发. 我们其 ...

  7. js循环语句while,do..while,for

    1. while循环 while(循环条件){ 循环体语句块; } 2.do..while循环 do{ 循环体语句块; }while(循环条件) 两者区别:while先判断后执行.循环体语句可能一次都 ...

  8. (Java实现) 最大团问题 部落卫队

    首先介绍下最大团问题: 问题描述:给一个无向图G=(V,E) ,V是顶点集合,E是边集合.然后在这顶点集合中选取几个顶点,这几 个顶点任意两个之间都有边在E中.求最多可以选取的顶点个数.这几个顶点就构 ...

  9. Java实现 LeetCode 712 两个字符串的最小ASCII删除和(最长公共子串&&ASCII值最小)

    712. 两个字符串的最小ASCII删除和 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 ...

  10. Java实现 LeetCode 390 消除游戏

    390. 消除游戏 给定一个从1 到 n 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数 ...