【发布时间】:2012-11-27 01:59:12
【问题描述】:
当我阅读 C++ 入门时,有一个定义的术语是 predicate。
定义是这样的:
返回可转换为布尔类型的函数。通常由通用算法用来测试元素。库使用的谓词要么是一元的(接受一个参数),要么是二元的(接受两个)。
任何返回可以转换为布尔类型的类型都可以是谓词!对?或者还有其他一些限制条件。
谢谢!
【问题讨论】:
-
假设您要删除字符串中的所有元音。通常,您会执行类似于(为简单起见忽略
erase调用)std::remove_if(std::begin(str), std::end(str), isVowel);的操作。在这种情况下,isVowel是谓词,它接受一个字符,如果是元音则返回 true。您可以将此概念应用于任何此类性质的事物。 -
正式地在 C++ 中,没有定义什么是谓词,它来自许多 C++ 标准库函数的命名参数的逻辑。就像在
InputIterator find_if(InputIterator first, InputIterator last, Predicate pred)中一样。顺便说一句,函子也可以是与这些函数一起使用的谓词。 -
@jogojapan 是的。但它已经关闭了。我想了解有关它的更多信息。谢谢!
标签: c++