相关疑难解决方法(0)

什么是C++仿函数及其用途?

我一直在听C++中的仿函数.有人可以给我一个关于它们是什么的概述以及在什么情况下它们会有用吗?

c++ functor function-object function-call-operator

822
推荐指数
8
解决办法
44万
查看次数

为什么在函数上使用函子?

相比

double average = CalculateAverage(values.begin(), values.end());
Run Code Online (Sandbox Code Playgroud)

double average = std::for_each(values.begin(), values.end(), CalculateAverage());
Run Code Online (Sandbox Code Playgroud)

使用函子而不是函数有什么好处?是不是第一个更容易阅读(甚至在添加实施之前)?

假设仿函数定义如下:

class CalculateAverage
{
private:
   std::size_t num;
   double sum;
public:

   CalculateAverage() : num (0) , sum (0)
   {
   }

   void operator () (double elem) 
   {
      num++; 
      sum += elem;
   }

   operator double() const
   {
       return sum / num;
   }
};
Run Code Online (Sandbox Code Playgroud)

c++ stl functor

54
推荐指数
3
解决办法
2万
查看次数

在C++中,编译器"内联"一个函数对象意味着什么?

在wikipedia 关于函数对象的文章中,它说这些对象在与for_each一起使用时具有性能优势,因为编译器可以"内联"它们.

我对这在这种情况下的意义有点模糊......或者我不好意思说的任何背景.谢谢你的帮助!

c++ functor function-object

15
推荐指数
2
解决办法
3580
查看次数

在某些 C++ 标准库中定义类而不是函数有什么好处?

最近我注意到 C++ std::less 是一个类,尽管它只是比较两个对象的值。下面是示例代码:

template <class T> struct less {
  bool operator() (const T& x, const T& y) const {return x<y;}
  typedef T first_argument_type;
  typedef T second_argument_type;
  typedef bool result_type;
};
Run Code Online (Sandbox Code Playgroud)

那么定义类而不是函数有什么好处呢?我还想知道为什么尽管类中没有数据成员却使用“const”关键字?

c++ oop stl

4
推荐指数
1
解决办法
106
查看次数