Spec-Zone.ru › C++

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

BinaryPredicate — это набор требований, которые некоторые средства стандартной библиотеки предъявляют к аргументам, предоставляемым пользователем.

Для BinaryPredicate bin_pred и пары итераторов iter1 и iter2 либо итератора iter и (возможно, const) значения value тип и категория значения выражения bin_pred(*iter1, *iter2) или, соответственно, bin_pred(*iter, value), должны удовлетворять требованиям BooleanTestable.

Кроме того, вычисление этого выражения не должно вызывать неконстантные функции-члены разыменованных итераторов; синтаксически предикат должен принимать аргументы-объекты const, причём поведение должно быть одинаковым независимо от того, являются ли его аргументы const или не-const.

Требования

  • Predicate
  • CopyConstructible (если не указано иное)

Стандартная библиотека

Следующие средства стандартной библиотеки требуют BinaryPredicate, который не является типом Compare.

unique
удаляет соседние повторяющиеся элементы
(открытая функция-член std::forward_list<T,Allocator>)
unique
удаляет соседние повторяющиеся элементы
(открытая функция-член std::list<T,Allocator>)
find_end
находит последнюю последовательность элементов в заданном диапазоне
(шаблон функции и функциональный объект алгоритма)
ranges::find_end
(C++20)
find_first_of
ищет любой элемент из заданного набора
(шаблон функции и функциональный объект алгоритма)
ranges::find_first_of
(C++20)
adjacent_find
находит первые два соседних элемента, которые равны (или удовлетворяют заданному предикату)
(шаблон функции и функциональный объект алгоритма)
ranges::adjacent_find
(C++20)
mismatch
находит первую позицию, в которой два диапазона различаются
(шаблон функции и функциональный объект алгоритма)
ranges::mismatch
(C++20)
equal
определяет, совпадают ли два набора элементов
(шаблон функции и функциональный объект алгоритма)
ranges::equal
(C++20)
is_permutation
(C++11)
определяет, является ли одна последовательность перестановкой другой
(шаблон функции и функциональный объект алгоритма)
ranges::is_permutation
(C++20)
search
ищет первое вхождение диапазона элементов
(шаблон функции и функциональный объект алгоритма)
ranges::search
(C++20)
search_n
ищет первое вхождение в диапазоне заданного количества подряд идущих копий элемента
(шаблон функции и функциональный объект алгоритма)
ranges::search_n
(C++20)
unique
удаляет соседние повторяющиеся элементы в диапазоне
(шаблон функции и функциональный объект алгоритма)
ranges::unique
(C++20)
unique_copy
создаёт копию диапазона элементов без соседних повторений
(шаблон функции и функциональный объект алгоритма)
ranges::unique_copy
(C++20)
not2
(устарело в C++17)(удалено в C++20)
создаёт пользовательский объект std::binary_negate
(шаблон функции)
unordered_set
(C++11)
контейнер уникальных ключей с хешированием по ключам
(шаблон класса)
unordered_map
(C++11)
контейнер пар «ключ-значение» с хешированием по ключам; ключи уникальны
(шаблон класса)
unordered_multiset
(C++11)
контейнер ключей с хешированием по ключам
(шаблон класса)
unordered_multimap
(C++11)
контейнер пар «ключ-значение» с хешированием по ключам
(шаблон класса)

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

DR Применён к Опубликованное поведение Правильное поведение
LWG 2114
(P2167R3)
C++98 преобразуемость возвращаемых типов в bool была недостаточно строгой
для отражения ожиданий реализаций
требования усилены
LWG 3031 C++98 требования к значениям const были недостаточными требования усилены

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

Spec-Zone.ru

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