2

这堂课是干什么用的?

class EqualTo {
private:
   int target;
public:
   EqualTo(int i) : target(i) {}
   bool operator()(const int& i) const {
     return i == target;
   }
};             

我在家庭作业中有这门课,他们已经将它与以下find功能一起使用:

it = list.find(EqualTo(3));

谢谢

4

1 回答 1

7

这是一个函子;也就是可以像函数一样调用的对象。它比函数更灵活,因为它还可以包含状态并在调用时使用它。这是一个如何直接使用它的示例:

EqualTo is5(5);   // Object to test whether numbers are 5

assert(is5(5));   // Returns true:  value is 5
assert(!is5(42)); // Returns false: value is not 5

在这种情况下,它接受一个值并返回一个布尔值来告诉您该值是否满足某些条件;执行此操作的函子称为谓词

it = list.find(EqualTo(3));

此示例使用谓词在容器中查找与条件匹配的元素。在这种情况下,它为您提供了一个指向第一个等于 3 的元素的迭代器。

于 2013-06-04T17:32:21.207 回答