C++ named requirements: Compare
Compare — это набор требований, предъявляемых некоторыми компонентами стандартной библиотеки к предоставляемым пользователем типам функциональных объектов.
Возвращаемое значение операции вызова функции, примененной к объекту типа, удовлетворяющего Compare , при преобразовании в bool , дает true , если первый аргумент вызова предшествует второму в отношении строгого слабого порядка , индуцированном этим типом, и false в противном случае.
Как и для любого BinaryPredicate , вычисление этого выражения не должно вызывать неконстантные функции через разыменованные итераторы и, синтаксически, операция вызова функции должна принимать const аргументы-объекты, с одинаковым поведением независимо от того, являются ли аргументы const или не- const .
Содержание |
Требования
Тип
T
удовлетворяет требованиям
Compare
если
-
Тип
Tудовлетворяет требованиям BinaryPredicate , и
Дано
-
comp, объект типаT, - equiv ( a, b ) , эквивалентное выражение для ! comp ( a, b ) && ! comp ( b, a ) .
Следующие выражения должны быть корректными и иметь указанные эффекты:
| Выражение | Тип возвращаемого значения | Требования | ||||
|---|---|---|---|---|---|---|
| comp ( a, b ) |
|
Устанавливает отношение
строгого слабого порядка
со следующими свойствами:
|
||||
| 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
если одна последовательность является подпоследовательностью другой
(шаблон функции) |
|
|
вычисляет разность двух множеств
(шаблон функции) |
|
|
вычисляет пересечение двух множеств
(шаблон функции) |
|
|
вычисляет симметрическую разность двух множеств
(шаблон функции) |
|
|
вычисляет объединение двух множеств
(шаблон функции) |
|
|
добавляет элемент в max heap
(шаблон функции) |
|
|
удаляет наибольший элемент из max heap
(шаблон функции) |
|
|
создает максимальную кучу из диапазона элементов
(шаблон функции) |
|
|
преобразует максимальную кучу в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции) |
|
|
(C++11)
|
проверяет, является ли заданный диапазон максимальной кучей
(шаблон функции) |
|
(C++11)
|
находит наибольший поддиапазон, который является max heap
(шаблон функции) |
|
возвращает большее из заданных значений
(шаблон функции) |
|
|
возвращает наибольший элемент в диапазоне
(шаблон функции) |
|
|
возвращает меньшее из заданных значений
(шаблон функции) |
|
|
возвращает наименьший элемент в диапазоне
(шаблон функции) |
|
|
(C++11)
|
возвращает меньший и больший из двух элементов
(шаблон функции) |
|
(C++11)
|
возвращает наименьший и наибольший элементы в диапазоне
(шаблон функции) |
|
возвращает
true
если один диапазон лексикографически меньше другого
(шаблон функции) |
|
|
генерирует следующую большую лексикографическую перестановку диапазона элементов
(шаблон функции) |
|
|
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции) |
Отчёты о дефектах
Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
контекстуальная конвертируемость типов возвращаемых значений в
bool
не отражала
практику реализаций |
требования исправлены |
| LWG 3031 | C++98 | требования к const значениям были недостаточными | требования усилены |
Смотрите также
|
(C++20)
|
указывает, что
relation
задает строгое слабое упорядочение
(концепт) |
| Операторы сравнения |
<
,
<=
,
>
,
>=
,
==
,
!=
, и
<=>
(C++20)
, сравнивают аргументы
|