这堂课是为了什么?
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));
感谢
答案 0 :(得分: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的元素。