首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

STL算法的functor参数解决办法

2013-01-09 
STL算法的functor参数我察看了stl的算法部分的源吗,如count_if这些函数的参数,有一个是functor对象,但是为

STL算法的functor参数
我察看了stl的算法部分的源吗,如count_if这些函数的参数,有一个是functor对象,但是为什么在调用时也可以传函数指针呢?我没有发现源吗里面count_if的原型有偏特化版本呀?求指导,迷惑了有一点时间了。
[解决办法]


template<class InputIterator, class Predicate> inline 
   size_t count_if(
      InputIterator First,
      InputIterator Last,
      Predicate P
   )
//最后一个参数是一元Predicate,只要符合Predicate语义的东西(原生态函数指针或者支持operator()运算符)都可以。


[解决办法]
只要这个参数支持()运算,并且参数与返回值符合要求就可以,是函数指针还是仿函数算法并不关心
[解决办法]
template <class InputIterator, class Predicate>
  ptrdiff_t count_if ( InputIterator first, InputIterator last, Predicate pred )
{
  ptrdiff_t ret=0;
  while (first != last) if (pred(*first++)) ++ret;
  return ret;
}

你可以传任何东西,只要能满足pred(*first++),即支持()运算即可,函数指针当然支持()运算。

你可以把你看的代码的count_if的实现贴出来。

热点排行