Пространства имён
Варианты
Действия

C++ именованные требования:Compare

Материал из cppreference.com
< cpp‎ | named req
 
 
Именованные требования в C++
Основные
Свойства типа
В масштабах библиотеки
Контейнер
Элементы контейнера
(C++11)

Итератор
Потоковый Ввод/Вывод
Форматтеры
(C++20)
Случайные Числа
(C++11)    
Конкуренция
Диапазоны
Другое
(C++11)


 

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

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

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

[править]Требования

Тип T удовлетворяет Compare если

Даны

  • comp, объект типа T
  • equiv(a, b), выражение, равнозначное !comp(a, b) && !comp(b, a)

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

ВыражениеВозвращаемое значениеТребования
comp(a, b)implicitly convertible к bool Устанавливает strict weak ordering отношение со следующими свойствами
  • Для всех 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 вызывает strict total ordering на классах эквивалентности, определяемых equiv

[править]Стандартная библиотека

Следующие стандартные библиотечные средства предполагают наличие Compare.

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

[править]Смотри также

указывает, что relation налагает строгий слабый порядок
(концепт)[править]
Comparison operators<, <=, >, >=, ==, !=, and <=>(C++20), compare the arguments
close