Namespaces
Variants

C++ named requirements: Compare

From cppreference.net
C++ named requirements

Compare — это набор требований, предъявляемых некоторыми компонентами стандартной библиотеки к предоставляемым пользователем типам функциональных объектов.

Возвращаемое значение операции вызова функции, примененной к объекту типа, удовлетворяющего Compare , при преобразовании в bool , дает true , если первый аргумент вызова предшествует второму в отношении строгого слабого порядка , индуцированном этим типом, и false в противном случае.

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

Содержание

Требования

Тип T удовлетворяет требованиям Compare если

Дано

Следующие выражения должны быть корректными и иметь указанные эффекты:

Выражение Тип возвращаемого значения Требования
comp ( a, b )

удовлетворяет BooleanTestable

(до C++20)

моделирует boolean-testable

(начиная с C++20)
Устанавливает отношение строгого слабого порядка со следующими свойствами:
  • Для всех a , comp ( a, a ) == false .
  • Если comp ( a, b ) == true , то comp ( b, a ) == false .
  • Если comp ( a, b ) == true и comp ( b, c ) == true , то comp ( a, c ) == true .
equiv ( a, b ) bool Устанавливает отношение эквивалентности со следующими свойствами:
  • Для всех a , equiv ( a, a ) == true .
  • Если equiv ( a, b ) == true , то equiv ( b, a ) == true .
  • Если equiv ( a, b ) == true и equiv ( b, c ) == true , то equiv ( a, c ) == true .

Примечание: comp задаёт строгий полный порядок на классах эквивалентности, определённых с помощью equiv .

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

Следующие средства стандартной библиотеки ожидают тип Compare .

коллекция уникальных ключей, отсортированная по ключам
(шаблон класса)
коллекция пар ключ-значение, отсортированная по ключам, ключи уникальны
(шаблон класса)
коллекция ключей, отсортированная по ключам
(шаблон класса)
коллекция пар ключ-значение, отсортированная по ключам
(шаблон класса)
адаптирует контейнер для предоставления очереди с приоритетом
(шаблон класса)
сортирует диапазон в порядке возрастания
(шаблон функции)
сортирует элементы
(публичная функция-член std::forward_list<T,Allocator> )
сортирует элементы
(публичная функция-член std::list<T,Allocator> )
сортирует диапазон элементов, сохраняя порядок между равными элементами
(шаблон функции)
сортирует первые N элементов диапазона
(шаблон функции)
копирует и частично сортирует диапазон элементов
(шаблон функции)
(C++11)
проверяет, отсортирован ли диапазон в порядке возрастания
(шаблон функции)
находит наибольший отсортированный поддиапазон
(шаблон функции)
частично сортирует заданный диапазон, обеспечивая его разделение по заданному элементу
(шаблон функции)
возвращает итератор на первый элемент не меньший заданного значения
(шаблон функции)
возвращает итератор на первый элемент больший определённого значения
(шаблон функции)
определяет, существует ли элемент в частично упорядоченном диапазоне
(шаблон функции)
возвращает диапазон элементов, соответствующих определённому ключу
(шаблон функции)
объединяет два отсортированных диапазона
(шаблон функции)
объединяет два отсортированных списка
(публичная функция-член std::forward_list<T,Allocator> )
объединяет два отсортированных списка
(публичная функция-член std::list<T,Allocator> )
объединяет два упорядоченных диапазона на месте
(шаблон функции)
возвращает true если одна последовательность является подпоследовательностью другой
(шаблон функции)
вычисляет разность двух множеств
(шаблон функции)
вычисляет пересечение двух множеств
(шаблон функции)
вычисляет симметрическую разность двух множеств
(шаблон функции)
вычисляет объединение двух множеств
(шаблон функции)
добавляет элемент в max heap
(шаблон функции)
удаляет наибольший элемент из max heap
(шаблон функции)
создает максимальную кучу из диапазона элементов
(шаблон функции)
преобразует максимальную кучу в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции)
(C++11)
проверяет, является ли заданный диапазон максимальной кучей
(шаблон функции)
находит наибольший поддиапазон, который является max heap
(шаблон функции)
возвращает большее из заданных значений
(шаблон функции)
возвращает наибольший элемент в диапазоне
(шаблон функции)
возвращает меньшее из заданных значений
(шаблон функции)
возвращает наименьший элемент в диапазоне
(шаблон функции)
(C++11)
возвращает меньший и больший из двух элементов
(шаблон функции)
возвращает наименьший и наибольший элементы в диапазоне
(шаблон функции)
возвращает true если один диапазон лексикографически меньше другого
(шаблон функции)
генерирует следующую большую лексикографическую перестановку диапазона элементов
(шаблон функции)
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(шаблон функции)

Отчёты о дефектах

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

DR Applied to Behavior as published Correct behavior
LWG 2114
( P2167R3 )
C++98 контекстуальная конвертируемость типов возвращаемых значений в bool не отражала
практику реализаций
требования исправлены
LWG 3031 C++98 требования к const значениям были недостаточными требования усилены

Смотрите также

указывает, что relation задает строгое слабое упорядочение
(концепт)
Операторы сравнения < , <= , > , >= , == , != , и <=> (C++20) , сравнивают аргументы