C++ именованные требования: Compare
Compare является набором требований, ожидаемых некоторыми средствами стандартной библиотеки от предоставляемых пользователем типов объектов функций.
Возвращаемое значение вызова функции применительно к объекту типа, удовлетворяющего Compare, когда contextually converted к bool, возвращает true если первый аргумент вызова появляется перед вторым вstrict weak ordering relation вызванные этим типом и false иначе.
Как и любой BinaryPredicate, вычисление этого выражения не позволяет вызывать не константные функции через разыменование итераторов и, синтаксически, операция вызова функции должна принимать аргументы объекта const с одинаковым поведением независимо от того, являются ли аргументы const или не const (начиная с C++20).
Требования
Тип T удовлетворяет Compare если
- Тип
Tудовлетворяет BinaryPredicate, и
Даны
comp, объект типаTequiv(a, b), выражение, равнозначное!comp(a, b) && !comp(b, a)
Следующие выражения должны быть допустимыми и иметь обусловленные эффекты
| Выражение | Возвращаемое значение | Требования |
|---|---|---|
comp(a, b)
|
implicitly convertible к bool
|
Устанавливает strict weak ordering отношение со следующими свойствами
|
equiv(a, b)
|
bool
|
Устанавливает отношение эквивалентности со следующими свойствами
|
Неообходимо заметить: comp вызывает strict total ordering на классах эквивалентности, определяемых equiv
Стандартная библиотека
Следующие стандартные библиотечные средства предполагают наличие Compare.
| коллекция уникальных ключей, отсортированная по ключам (шаблон класса) | |
| коллекция пар ключ-значение, отсортированных по ключам, ключи уникальны (шаблон класса) | |
| коллекция ключей, отсортированная по ключам (шаблон класса) | |
| коллекция пар ключ-значение, отсортированных по ключам (шаблон класса) | |
| адаптирует контейнер для предоставления очереди с приоритетами (шаблон класса) | |
| сортирует диапазон в порядке возрастания (шаблон функции) | |
(C++11) |
сортирует элементы (public функция-элемент std::forward_list)
|
| сортирует элементы (public функция-элемент std::list)
| |
| сортирует диапазон элементов, сохраняя порядок между равными элементами (шаблон функции) | |
| сортирует первые N элементов диапазона (шаблон функции) | |
| копирует и частично сортирует диапазон элементов (шаблон функции) | |
(C++11) |
проверяет, отсортирован ли диапазон по возрастанию (шаблон функции) |
(C++11) |
находит наиболее длинный отсортированный префиксный поддиапазон (шаблон функции) |
| частично сортирует заданный диапазон, убедившись, что он разделён заданным элементом (шаблон функции) | |
| возвращает итератор на первый элемент не меньший, чем заданное значение (шаблон функции) | |
| возвращает итератор на первый элемент, который больше определённого значения (шаблон функции) | |
| определяет, существует ли элемент в частично упорядоченном диапазоне (шаблон функции) | |
| возвращает диапазон элементов, соответствующих определённому ключу (шаблон функции) | |
| объединяет два отсортированных диапазона (шаблон функции) | |
(C++11) |
сливает два отсортированных списка (public функция-элемент std::forward_list)
|
| сливает два отсортированных списка (public функция-элемент std::list)
| |
| объединяет два упорядоченных диапазона на месте (шаблон функции) | |
возвращает true, если одна последовательность является подпоследовательностью другой (шаблон функции) | |
| вычисляет разницу между двумя наборами (шаблон функции) | |
| вычисляет пересечение двух множеств (шаблон функции) | |
| вычисляет симметричную разницу между двумя наборами (шаблон функции) | |
| вычисляет объединение двух множеств (шаблон функции) | |
| добавляет элемент в максимальную кучу (шаблон функции) | |
| удаляет наибольший элемент из максимальной кучи (шаблон функции) | |
| создаёт максимальную кучу из диапазона элементов (шаблон функции) | |
| превращает максимальную кучу в диапазон элементов, отсортированных в порядке возрастания (шаблон функции) | |
| проверяет, является ли указанный диапазон максимальной кучей (шаблон функции) | |
(C++11) |
находит самый большой поддиапазон, который составляет максимальную кучу (шаблон функции) |
| возвращает большее из заданных значений (шаблон функции) | |
| возвращает наибольший элемент в диапазоне (шаблон функции) | |
| возвращает меньшее из заданных значений (шаблон функции) | |
| возвращает наименьший элемент в диапазоне (шаблон функции) | |
(C++11) |
возвращает меньший и больший из двух элементов (шаблон функции) |
(C++11) |
возвращает наименьший и наибольший элементы в диапазоне (шаблон функции) |
возвращает true, если один диапазон лексикографически меньше другого (шаблон функции) | |
| генерирует следующую большую лексикографическую перестановку диапазона элементов (шаблон функции) | |
| генерирует следующую меньшую лексикографическую перестановку диапазона элементов (шаблон функции) |
Смотри также
(C++20) |
указывает, что relation налагает строгий слабый порядок (концепт) |
| Comparison operators | <, <=, >, >=, ==, !=, and <=> (C++20), compare the arguments
|