2 wuyan233 wuyan233 于 2016.02.03 16:11 提问

关于C++11 bind函数的疑问

deque coll2 = {1,2,3,4,5,6,7,8,9};
coll2.erase(
remove_if(coll2.begin(), coll2.end(),
bind(logical_and(),
bind(greater_equal(), _1, 5),
bind(less_equal(), _1, 8))),
coll2.end());

上面表达式的意思是删除coll2里大于等于5小于等于8的元素,
外层的erase和remove_if我都熟悉,但是这一句:
bind(logical_and(),
bind(greater_equal(), _1, 5),
bind(less_equal(), _1, 8))
我觉得总体的意思是bind生成一个函数对象,这个函数对象接受coll2给的一个int元素并返回bool,
但是为什么bind()里面还要bind(),这不就是把里层的bind生成的函数对象绑定给外层作为固定参数了吗,
不太理解,求大神具体解释一下。谢谢!

2个回答

91program
91program   Ds   Rxr 2016.02.03 16:32

bind 函数的各个参数的含义,请先理解。第一个应该是后面条件的复合关系:和/或等;第二与第三个参数应该是条件;
这个具体需要理解 bind 的参数,最好是能查到官方的函数说明。

oyljerry
oyljerry   Ds   Rxr 2016.02.03 20:02

bind是进行函数绑定,同时返回一个新对象。然后里面的_1表示第一个参数所在的位置。用作placeholder。然后就是利用几个预定义函数大于,小于

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[C/C++11]_[初级]_[std::bind介绍和使用]
场景1.C++11 引入了std::function 对象, 这个对象可以通过std::bind封装所有的函数, 并通过代理调用这个std::function的方式调用这个函数. 比如通过统一的方式调用不定参数个数的函数. 这对实现代理模式等设计模式帮助是很大的.说明1.cppreference 上的使用例子我就不多说了, 除了可以用在标准库上, 也是可以用在自己设计带代码结构里. 和 boost
c++11中的bind和function
这次要讲的是:c++11中的bind和function std::function 它是函数、函数对象、函数指针、和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针。 以统一的方式处理函数、函数对象、函数指针、和成员函数。 允许保存和延迟执行函数。 函数和成员函数作为function void G(); struct A { void H()
C++11的function bind回调机制
#include using namespace std::placeholders; 1.可以提前声明函数类型:function  函数名;               function fn   也可以不用声明类型直接bind前面:auto fn = bind(  ....)    函数参数的对应:                          以实际函数的参数对应声明的位置
C++11 学习笔记 std::function和bind绑定器
一.std::function       C++中的可调用对象虽然具有比较统一操作形式(除了类成员指针之外,都是后面加括号进行调用),但定义方法五花八门。为了统一泛化函数对象,函数指针,引用函数,成员函数的指针的各种操作,让我们可以按更统一的方式写出更加泛化的代码,C++11推出了std::function。   std::function是可调用对象的包装器。它是一个类模板,可以容
C++11中function和bind绑定函数的理解--其中可能存在理解错误。这里只是粗糙理解而已。
-
C++11中的function和bind
C++11中的function和bind
C++11 bind函数实现原理图
本文内容来自http://blog.think-async.com/2010/04/bind-illustrated.html 1、bind函数能够将用户提供的需要一个参数的函数调整为不需要参数的函数对象。需要的时候,绑定的值(这个例子中是123)存储在函数对象中,自动地传递给用户指定的函数。 一个匿名类(即这里的binder类)的成员变量捕获了函数指针的值和绑定的参数的值,匿名类
C++11新特性应用--实现延时求值(std::function和std::bind)
说是延时求值,注意还是想搞一搞std::function和std::bind。之前博客《C++11新特性之std::function》注意是std::function如何实现回调函数。现在就算是补充吧,再把std::bind进行讨论讨论。何为Callable Objects? 即可调用对象,比如函数指针、仿函数、类成员函数指针等都可称为可调用对象。对象包装器 Function wrapper
C++11 std::bind std::function 高级用法
C++11 std::bind std::function 高级用法
Socket编程(C语言实现):bind()函数英文翻译
本篇翻译的bind()函数,我参考的国外网站是: bind 朋友们可以自由转载我对英文的中文翻译,但是对于“作者注:”的描述,转载时请注明出处和作者,否则视为侵权。 下面是翻译的正文,由于水平有限,有些翻译的不好,有些未能翻译出,恳请读者指出与见谅。 NAME bind - bind a name to a socket bind一个名字到一个套接字上。 SYNOPSIS #i