boost库在工作(13)绑定器与函数对象之一
http://blog.youkuaiyun.com/caimouse/article/details/8652346
std::bind1st和std::bind2nd
boost库在工作(14)绑定器与函数对象之二
http://blog.youkuaiyun.com/caimouse/article/details/8661014
std::for_each(vRect.begin(), vRect.end(),std::bind1st(std::mem_fun(&CObj::Fun),this));
boost库在工作(15)绑定器与函数对象之三
http://blog.youkuaiyun.com/caimouse/article/details/8682793
boost库里的绑定器bind与STL里定义的两个相比,参数比较多,可以多达9个,也许你会问,如果多于9个怎么样办呢?多于9个的情况是比较少的,就算有了,在这种情况之下,也需要定义一个数据结构来保存,传递一个指针进来比较合算,因为这样参数少,方便维护,同样传送的效率提高了。第二个优点是绑定成员函数简单,不需要调用mem_fun函数,第三个优点是提供占位符,可以随便指定到那个参数传入。9个参数的占位符的名称是_1,_2,_3,一直接到_9。
vRect.erase(std::remove_if(vRect.begin(), vRect.end(),boost::bind(&CObjBind::IsLess,this, _1)), vRect.end());
在这个例子里,先调用算法remove_if来删除数组中小于指定条件的元素,并返回无效元素的起始位置,然后调用vRect.erase删除后面无效的元素,最终在数组里就剩下有效的元素了。
必须系统的好好学习STL了
boost::bind(std::logical_and<bool>(),
boost::bind(std::greater<int>(),_1, 10),
boost::bind(std::less_equal<int>(),_1, 20))(15);
std::remove_if
std::mem_fun
std::for_each
都没用过。。。