C++ именованные требования:Compare
Compare является набором требований, ожидаемых некоторыми средствами стандартной библиотеки от предоставляемых пользователем типов объектов функций.
Возвращаемое значение вызова функции применительно к объекту типа, удовлетворяющего Compare, когда contextually converted к bool, возвращает true если первый аргумент вызова появляется перед вторым вstrict weak ordering relation вызванные этим типом и 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) | 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 |