STL Function Objects

原创 2013年12月03日 11:01:27

STL Function Objects

  • mem_fun &mem_fun_ref

Test code:

   void foo (const std::vector<Person>& coll)
   {
       using std::for_each;
       using std::bind2nd;
       using std::mem_fun_ref;


        //call member function print() for each element
        for_each (coll.begin(), coll.end(),
                  mem_fun_ref(&Person::Print));


        //call member function printWithPrefix() for each element
        //-"person: " is passed as an argument to the member function
        for_each (coll.begin(), coll.end(),
                  bind2nd (mem_fun_ref (&Person::printWithPrefix),
                           "person: "));
    }

equal:

for(int i=0;i<coll.size();i++)
{
    coll[i].Print();
}

对于stl的使用,近最大可能不使用自己定义的循环,而是使用for_eash;

mem_fun_ref mem_fun 的区别。

当容器中存放的是对象实体的时候用mem_fun_ref,当容器中存放的是对象的指针的时候用mem_fun


  • bind2nd:

           
void foo_bind2mind(const std::vector<Person>& coll)
{
  using std::for_each;
  using std::bind2nd;
  using std::mem_fun_ref;


   //call member function print() for each element
   for_each (coll.begin(), coll.end(),
             mem_fun_ref(&Person::print));


   //call member function printWithPrefix() for each element
   //-"person: " is passed as an argument to the member function
   for_each (coll.begin(), coll.end(),
             bind2nd (mem_fun_ref (&Person::printWithPrefix),
                      "person: "));//bind2nd "persion" is the paramter transfer to printWithPrefix by using bind2nd
}


函数对象(Function Objects)

函数对象简介 函数对象,也叫仿函数,是一种实现了operator()的类型。STL使用函数对象用在一些算法上。 函数对象比直接的函数调用提供了2方面的优点。 1:函数对象可以包含自身的状态(因为...
  • QQ575787460
  • QQ575787460
  • 2013年03月09日 11:22
  • 957

对STL的增加之函数对象篇:实现函数与回调bind/Lambda/function/signals

函数与回调: bind:是函数适配器的增强,可以适配任意可调用对象,包括了函数指针、函数引用、函数对象,把它们变成一个新的函数对象。 function库:对函数指针类型的增强,能容纳任意的可调用对象...
  • wodeyijia911
  • wodeyijia911
  • 2014年03月11日 20:52
  • 550

使用GDB 调试STL方法

背景: 当我们用gdb调试stl时候,往往看到的是stl内部变量的值,比如打印一个string a 输出: (gdb) p a $1 = {   static npos = 1844674407370...
  • daofengliu
  • daofengliu
  • 2013年08月23日 11:40
  • 3810

仿函数(functors/function objects)原理及使用

仿函数(functors,或名 function objects,函数对象),是 STL 六大组件(Components)的重要一环,如下图: 仿函数的应用场景主要在:作为算法组件中的相关函数接...
  • lanchunhui
  • lanchunhui
  • 2016年02月19日 08:53
  • 616

bug调试 使用Zombie Objects(僵尸对象)来解决关于内存泄露的问题

前段时间,做项目的时候 测试发现了一个bug 打过来重现的时候 发现就算打了全局断点,也没办法找到。。。无奈之下 就使用Xcode的Zombie Objects来查找定位。 当时报错:      ...
  • kevinSnip
  • kevinSnip
  • 2016年03月01日 10:38
  • 1935

stl里的function和bind的实现

前一段时间仔细研究了下STL里面的function和bind,并写了两篇博文: std::tr1::function源码剖析(一) std::tr1::function源码剖析(二) 虽然当时仔细...
  • imilli
  • imilli
  • 2016年02月01日 15:50
  • 232

[Guava源码分析](6)Objects分析

1. 私有构造器private Objects() {}2. 判断两个可能为null的对象是否相等public static boolean equal(@Nullable Object a, @Nu...
  • SunnyYoona
  • SunnyYoona
  • 2017年05月02日 12:09
  • 406

google mock C++单元测试框架

google mock C++单元测试框架 2012-03-12 09:33:59 分类: C/C++ Content ...
  • jfkidear
  • jfkidear
  • 2013年12月25日 22:13
  • 2872

本地对象,内置对象,宿主对象

4.3.6native object object in an ECMAScript implementation whose semantics are fully defined by this ...
  • u010119868
  • u010119868
  • 2014年02月26日 17:20
  • 1194

R语言 出现的问题及解决

问题一: object(s) are masked from package - what does it mean?   Sometime when I attach a dataset,...
  • disappearedgod
  • disappearedgod
  • 2013年03月18日 10:05
  • 6698
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL Function Objects
举报原因:
原因补充:

(最多只允许输入30个字)