C++ именованные требования: Compare
Compare — это набор требований, ожидаемых некоторыми средствами стандартной библиотеки от типов пользовательских объектов-функций.
Значение возвращаемое операцией вызова функции, примененной к объекту типа, удовлетворяющего Compare, когда явным образом преобразуется в bool, равно true, если первый аргумент вызова предшествует второму в строго слабом упорядочении, индуцированном этим типом, и false в противном случае.
Как и в случае с любым BinaryPredicate, вычисление этого выражения не допускает вызов неконстантных функций через разыменованные итераторы и, синтаксически, операция вызова функции должна принимать const объекта аргументы, с одинаковым поведением независимо от того, являются ли аргументы const или не-const(с C++20).
Требования
Тип T удовлетворяет Compare, если
- Тип
Tудовлетворяет BinaryPredicate, и
Дано
-
comp, объект типаT, -
equiv(a, b), выражение эквивалентное!comp(a, b) && !comp(b, a).
Следующие выражения должны быть допустимыми и иметь указанные эффекты:
| Выражение | Тип возврата | Требования |
|---|---|---|
comp(a, b) |
явным образом преобразуется в bool | Устанавливает строгое слабое упорядочение с следующими свойствами:
|
equiv(a, b) |
bool | Устанавливает отношение эквивалентности с следующими свойствами:
|
Примечание: comp индуцирует строгое полное упорядочение на классах эквивалентности, определенных equiv.
Стандартная библиотека
Следующие средства стандартной библиотеки ожидают тип Compare.
| множество уникальных ключей, отсортированных по ключам (шаблон класса) |
|
| коллекция пар ключ-значение, отсортированная по ключам, ключи уникальны (шаблон класса) |
|
| коллекция ключей, отсортированных по ключам (шаблон класса) |
|
| коллекция пар ключ-значение, отсортированная по ключам (шаблон класса) |
|
| адаптирует контейнер для обеспечения очереди с приоритетом (шаблон класса) |
|
| сортирует диапазон в порядке возрастания (шаблон функции) |
|
| сортирует элементы (публичный член-функция std::forward_list<T,Allocator>) |
|
| сортирует элементы (публичный член-функция std::list<T,Allocator>) |
|
| сортирует диапазон элементов, сохраняя порядок между равными элементами (шаблон функции) |
|
| сортирует первые N элементов диапазона (шаблон функции) |
|
| копирует и частично сортирует диапазон элементов (шаблон функции) |
|
|
(C++11) | проверяет, отсортирован ли диапазон в порядке возрастания (шаблон функции) |
|
(C++11) | находит наибольший отсортированный поддиапазон (шаблон функции) |
| частично сортирует данный диапазон, гарантируя, что он разбит заданным элементом (шаблон функции) |
|
| возвращает итератор на первый элемент, не меньший заданного значения (шаблон функции) |
|
| возвращает итератор на первый элемент, больший определенного значения (шаблон функции) |
|
| определяет, существует ли элемент в частично упорядоченном диапазоне (шаблон функции) |
|
| возвращает диапазон элементов, соответствующих заданному ключу (шаблон функции) |
|
| объединяет два отсортированных диапазона (шаблон функции) |
|
| объединяет два отсортированных списка (публичный член-функция std::forward_list<T,Allocator>) |
|
| объединяет два отсортированных списка (публичный член-функция std::list<T,Allocator>) |
|
| объединяет два упорядоченных диапазона на месте (шаблон функции) |
|
возвращает true если одна последовательность является подпоследовательностью другой (шаблон функции) |
|
| вычисляет разность между двумя множествами (шаблон функции) |
|
| вычисляет пересечение двух множеств (шаблон функции) |
|
| вычисляет симметрическую разность между двумя множествами (шаблон функции) |
|
| вычисляет объединение двух множеств (шаблон функции) |
|
| добавляет элемент в кучу с максимальным приоритетом (шаблон функции) |
|
| удаляет наибольший элемент из кучи с максимальным приоритетом (шаблон функции) |
|
| создает кучу с максимальным приоритетом из диапазона элементов (шаблон функции) |
|
| преобразует кучу с максимальным приоритетом в диапазон элементов, отсортированных в порядке возрастания (шаблон функции) |
|
|
(C++11) | проверяет, является ли данный диапазон кучей с максимальным приоритетом (шаблон функции) |
|
(C++11) | находит наибольший поддиапазон, который является кучей с максимальным приоритетом (шаблон функции) |
| возвращает большее из заданных значений (шаблон функции) |
|
| возвращает наибольший элемент в диапазоне (шаблон функции) |
|
| возвращает меньшее из заданных значений (шаблон функции) |
|
| возвращает наименьший элемент в диапазоне (шаблон функции) |
|
|
(C++11) | возвращает меньшее и большее из двух элементов (шаблон функции) |
|
(C++11) | возвращает наименьший и наибольший элементы в диапазоне (шаблон функции) |
возвращает true если один диапазон лексикографически меньше другого (функция-шаблон) |
|
| генерирует следующее большее лексикографическое перестановку диапазона элементов (функция-шаблон) |
|
| генерирует следующую меньшую лексикографическую перестановку диапазона элементов (функция-шаблон) |
См. также
|
(C++20) | определяет, что relation накладывает строгое слабое упорядочение (концепция) |
| Операторы сравнения | <, <=, >, >=, ==, !=, и <=> (C++20), сравнивают аргументы |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/Compare