C++ 这门课有什么用?

C++ 这门课有什么用?,c++,class,C++,Class,这节课是干什么的? 我在家庭作业中使用了这个类,他们将它与find函数一起使用,就像: it = list.find(EqualTo(3)); 谢谢这是一个函子;也就是说,一个对象可以像函数一样被调用。它比函数更灵活,因为它还可以包含状态,并在调用时使用状态。下面是一个如何直接使用它的示例: EqualTo is5(5); // Object to test whether numbers are 5 assert(is5(5)); // Returns true: value

这节课是干什么的?

我在家庭作业中使用了这个类,他们将它与
find
函数一起使用,就像:

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

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

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
在这种情况下,它接受一个值并返回一个布尔值来告诉您该值是否满足某些条件;这样做的函子称为谓词


本例使用谓词在容器中查找与条件匹配的元素。在本例中,它给出一个迭代器,指向第一个等于3的元素。

这是一个实现布尔谓词的函子。请告诉我他们没有教这些东西…@crush,为什么不教?(除了
i
应该按值传递,而不是常量引用,但仍然)是的,他们正在教学。。为什么?@crush:你是说使用标准库很难看?或者这个代码不符合你的审美标准?它在我看来并不难看(除了有问题的引用参数,以及我个人倾向于将公共声明放在第一位)False:5不是真的断言true,因为
is5(42)将返回False
?@crush:是的,这就是我的意思。functor返回
false
,因此断言成功。我已经澄清了一些评论。
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));