跳到主要内容

C++ 命名要求: Predicate

Predicate 要求描述了一个可调用对象,它返回一个可测试为 bool 的值。

Predicate 通常与算法一起使用,这些算法接受输入数据(单个对象/容器)和一个 predicate,然后将 predicate 应用于输入数据以决定进一步的操作。C++ 标准库中 predicate 用法的示例包括

  • std::all_of, std::any_of, std::none_of 接受一个元素数组和一个 predicate 作为输入。对单个输入元素调用 predicate,如果所有/任何/没有元素都使 predicate 返回 true,则返回 true。

  • std::find_if 接受元素序列和一个 predicate。返回序列中第一个使 predicate 返回 true 的元素。

上面给出的算法工具描述是粗略的,旨在简单地解释 Predicate。有关详细信息,请参阅各个页面。

换句话说,如果一个算法接受一个 Predicate pred 和一个迭代器 first,它应该能够通过诸如 if(pred(*first)) {...} 这样的构造,使用给定的 predicate 测试迭代器 first 所指向的类型对象。

函数对象 pred 不得通过解引用迭代器应用任何非常量函数 ,并且必须接受一个常量对象参数,无论其参数是常量还是非常量,其行为都相同  (C++20 起)。此函数对象可以是函数指针或具有适当函数调用运算符的类型对象。

要求

此部分不完整
原因:更好地描述实际需求

C++ 命名要求: Predicate

Predicate 要求描述了一个可调用对象,它返回一个可测试为 bool 的值。

Predicate 通常与算法一起使用,这些算法接受输入数据(单个对象/容器)和一个 predicate,然后将 predicate 应用于输入数据以决定进一步的操作。C++ 标准库中 predicate 用法的示例包括

  • std::all_of, std::any_of, std::none_of 接受一个元素数组和一个 predicate 作为输入。对单个输入元素调用 predicate,如果所有/任何/没有元素都使 predicate 返回 true,则返回 true。

  • std::find_if 接受元素序列和一个 predicate。返回序列中第一个使 predicate 返回 true 的元素。

上面给出的算法工具描述是粗略的,旨在简单地解释 Predicate。有关详细信息,请参阅各个页面。

换句话说,如果一个算法接受一个 Predicate pred 和一个迭代器 first,它应该能够通过诸如 if(pred(*first)) {...} 这样的构造,使用给定的 predicate 测试迭代器 first 所指向的类型对象。

函数对象 pred 不得通过解引用迭代器应用任何非常量函数 ,并且必须接受一个常量对象参数,无论其参数是常量还是非常量,其行为都相同  (C++20 起)。此函数对象可以是函数指针或具有适当函数调用运算符的类型对象。

要求

此部分不完整
原因:更好地描述实际需求