STL bind1st bind2nd详解

时间:2022-09-01 16:19:45

STL bind1st bind2nd详解

 

先不要被吓到,其实这两个配接器很简单。
首先,他们都在头文件<functional>中定义。
其次,bind就是绑定的意思,而1st就代表first,2nd就代表second,现在名在可以很快记住了。
再次,他们的申明是一样的,都是(const Operation& op, const T& x)。

简单的说,bind1st(const Operation& op, const T& x)就是这么一个操作:x op value,而bind2nd(const Operation& op, const T& x)就是这么一个操作:value op x,其中value是被应用bind的对象。这两个配接器都用于将一个二元算子转换成一个一元算子。下面来看一段代码吧!

//Coded by www.programlife.net
#include <iostream>
#include <functional>
#include <algorithm>
#include <vector>
using namespace std; int main()
{
vector<int> coll;
for(int i = 1; i <= 10; ++i)
{
coll.push_back(i);
}
//查找元素值大于10的元素的个数
//也就是使得10 < elem成立的元素个数
int res = count_if(coll.begin(), coll.end(), bind1st(less<int>(), 10));
cout << res << endl;
//查找元素值小于10的元素的个数
//也就是使得elem < 10成立的元素个数
res = count_if(coll.begin(), coll.end(), bind2nd(less<int>(), 10));
cout << res << endl; return 0;
}

程序的输出结果是0 9

STL bind1st bind2nd详解的更多相关文章

  1. C&plus;&plus; STL bitset 容器详解

    C++ STL bitset 容器详解 本篇随笔讲解\(C++STL\)中\(bitset\)容器的用法及常见使用技巧. \(bitset\)容器概论 \(bitset\)容器其实就是个\(01\)串 ...

  2. not1&comma;not2&comma;bind1st和bind2nd详解

    1.引言 bind1st和bind2nd函数用于将一个二元函数对象(binary functor,bf)转换成一元函数对象(unary functor,uf).为了达到这个目的,它们需要两个参数:要转 ...

  3. &lbrack;GeekBand&rsqb; STL 仿函数入门详解

    本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) page 37 :网络资料: 叶卡同学的部落格  http://www.leavesite. ...

  4. C&plus;&plus; STL之vector详解

    转自http://blog.sina.com.cn/s/blog_9f1c0931010180cy.html Vectors   vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作 ...

  5. C&plus;&plus; STL Binary search详解

    一.解释 以前遇到二分的题目都是手动实现二分,不得不说错误比较多,关于返回值,关于区间的左闭右开等很容易出错,最近做题发现直接使用STL中的二分函数方便快捷还不会出错,不过对于没有接触过的同学,二分函 ...

  6. C&plus;&plus; STL之LIST详解A

    List 容器 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容 ...

  7. &lbrack;C&plus;&plus; STL&rsqb; set使用详解

    一.set介绍: set容器内的元素会被自动排序,set与map不同,set中的元素即是键值又是实值,set不允许两个元素有相同的键值.不能通过set的迭代器去修改set元素,原因是修改元素会破坏se ...

  8. Qt迭代器(Java类型和STL类型)详解

    迭代器为访问容器类里的数据项提供了统一的方法,Qt 有两种迭代器类:Java 类型的迭代器和 STL 类型的迭代器. 两者比较,Java 类型的迭代器更易于使用,且提供一些高级功能,而 STL 类型的 ...

  9. STL之vector详解

    一.vector容器的自增长 首先,我们知道vector容器是由数组做出来的:它具备了数组的优缺点. 数组的优点: 操作数据,读取速度很快,因为有下标: 数组的缺点: 分配之后不能在改变大小: #in ...

随机推荐

  1. JDK source 之 ArrayList 需要注意事项

    线程安全 ArrayList内部没有实现原子性操作,所以是非线程安全的.如果需要在线程安全的环境下使用List的话,需要使用Vector 或者CopyOnWriteArrayList,具体场景,自行深 ...

  2. 学习笔记--博弈组合-SG函数

    fye学姐的测试唯一的水题.... SG函数是一种游戏图每个节点的评估函数 具体定义为: mex(minimal excludant)是定义在整数集合上的操作.它的自变量是任意整数集合,函数值是不属于 ...

  3. 7个鲜为人知却超实用的PHP函数

    PHP有许多内置函数,其中大多数函数都被程序员广泛使用.但也有一些函数隐藏在角落,本文将向大家介绍7个鲜为人知,但用处非常大的函数. 没用过的程序员不妨过来看看. 1.highlight_string ...

  4. PRINTDLG 结构体

    //包含 PrintDlg 函数用来初始化Print Dialog Box的信息,在用户关闭窗口后,返回用户选择的信息typedef struct tagPD { DWORD lStructSize; ...

  5. 安装setuptools和pip

    什么是setuptool和pip python的强大在于它有许许多多的包,当我们要用到这些包时,一个一个的从官网下载安装就太麻烦了,setuptools和pip就提供了下载安装第三方包的功能.pip是 ...

  6. fzu 1911 Construct a Matrix&lpar;矩阵快速幂&plus;规律)

    题目链接:fzu 1911 Construct a Matrix 题目大意:给出n和m,f[i]为斐波那契数列,s[i]为斐波那契数列前i项的和.r = s[n] % m.构造一个r * r的矩阵,只 ...

  7. 正确的 Composer 扩展包安装方法

    问题说明 我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 com ...

  8. 2018-2019-2 《网络对抗技术》Exp6 信息搜集与漏洞扫描 Week9 20165233

    Exp6 信息搜集与漏洞扫描 目录 一.基础问题 二.实验步骤 实验点一:各种搜索技巧的应用 实验点二:DNS IP注册信息的查询 实验点三:基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具 ...

  9. 在linq to entities中无法使用自定义方法

    来源: http://support.microsoft.com/kb/2588635/zh-tw (繁体)

  10. CSS学习笔记(2)--html中checkbox和radio

    checkbox复选,radio单选 <!DOCTYPE html> <html lang="en"> <head> <meta char ...