Spec-Zone.ru › C++

C++ именованные требования: Predicate

Требования Predicate описывают вызываемый объект, возвращающий значение, проверяемое как bool.

Predicate обычно используется с алгоритмами, которые принимают входные данные (отдельные объекты/контейнеры) и предикат, который затем вызывается на входных данных, чтобы принять решение о дальнейшем ходе действия. Некоторые примеры использования предиката в стандартной библиотеке C++:

  • std::all_of, std::any_of, std::none_of Принимают массив элементов и предикат в качестве входных данных. Вызывают предикат для отдельных входных элементов и возвращают true, если для всех/любых/ни одного элементов предикат возвращает true.
  • std::find_if Принимает последовательность элементов и предикат. Возвращает первый элемент в последовательности, для которого предикат возвращает значение, равное true.

Описание функций алгоритмов, приведенное выше, упрощенное и предназначено для объяснения Predicate простыми словами. Для получения подробной информации см. отдельные страницы.

Другими словами, если алгоритм принимает Predicate pred и итератор first, он должен уметь проверять объект типа, на который указывает итератор first, используя заданный предикат с помощью конструкции, подобной if(pred(*first)) {...}.

Объект-функция pred не должен применять никакую неконстантную функцию через разыменованный итератор и должен принимать аргумент типа const с одинаковым поведением независимо от того, является ли его аргумент const или не-const(с C++20). Этот объект-функция может быть указателем на функцию или объектом типа с соответствующим оператором вызова функции.

Требования

  • Функция-объект

См. также

предикат
(C++20)
определяет, что тип вызываемого объекта является булевым предикатом
(концепт)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/Predicate

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API