Spec-Zone.ru › C++

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

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

Значение возвращаемое операцией вызова функции, примененной к объекту типа, удовлетворяющего Compare, когда явным образом преобразуется в bool, равно true, если первый аргумент вызова предшествует второму в строго слабом упорядочении, индуцированном этим типом, и 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) явным образом преобразуется в bool Устанавливает строгое слабое упорядочение с следующими свойствами:
  • Для всех 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.

set
множество уникальных ключей, отсортированных по ключам
(шаблон класса)
map
коллекция пар ключ-значение, отсортированная по ключам, ключи уникальны
(шаблон класса)
multiset
коллекция ключей, отсортированных по ключам
(шаблон класса)
multimap
коллекция пар ключ-значение, отсортированная по ключам
(шаблон класса)
priority_queue
адаптирует контейнер для обеспечения очереди с приоритетом
(шаблон класса)
sort
сортирует диапазон в порядке возрастания
(шаблон функции)
sort
сортирует элементы
(публичный член-функция std::forward_list<T,Allocator>)
sort
сортирует элементы
(публичный член-функция std::list<T,Allocator>)
stable_sort
сортирует диапазон элементов, сохраняя порядок между равными элементами
(шаблон функции)
partial_sort
сортирует первые N элементов диапазона
(шаблон функции)
partial_sort_copy
копирует и частично сортирует диапазон элементов
(шаблон функции)
is_sorted
(C++11)
проверяет, отсортирован ли диапазон в порядке возрастания
(шаблон функции)
is_sorted_until
(C++11)
находит наибольший отсортированный поддиапазон
(шаблон функции)
nth_element
частично сортирует данный диапазон, гарантируя, что он разбит заданным элементом
(шаблон функции)
lower_bound
возвращает итератор на первый элемент, не меньший заданного значения
(шаблон функции)
upper_bound
возвращает итератор на первый элемент, больший определенного значения
(шаблон функции)
binary_search
определяет, существует ли элемент в частично упорядоченном диапазоне
(шаблон функции)
equal_range
возвращает диапазон элементов, соответствующих заданному ключу
(шаблон функции)
merge
объединяет два отсортированных диапазона
(шаблон функции)
merge
объединяет два отсортированных списка
(публичный член-функция std::forward_list<T,Allocator>)
merge
объединяет два отсортированных списка
(публичный член-функция std::list<T,Allocator>)
inplace_merge
объединяет два упорядоченных диапазона на месте
(шаблон функции)
includes
возвращает true если одна последовательность является подпоследовательностью другой
(шаблон функции)
set_difference
вычисляет разность между двумя множествами
(шаблон функции)
set_intersection
вычисляет пересечение двух множеств
(шаблон функции)
set_symmetric_difference
вычисляет симметрическую разность между двумя множествами
(шаблон функции)
set_union
вычисляет объединение двух множеств
(шаблон функции)
push_heap
добавляет элемент в кучу с максимальным приоритетом
(шаблон функции)
pop_heap
удаляет наибольший элемент из кучи с максимальным приоритетом
(шаблон функции)
make_heap
создает кучу с максимальным приоритетом из диапазона элементов
(шаблон функции)
sort_heap
преобразует кучу с максимальным приоритетом в диапазон элементов, отсортированных в порядке возрастания
(шаблон функции)
is_heap
(C++11)
проверяет, является ли данный диапазон кучей с максимальным приоритетом
(шаблон функции)
is_heap_until
(C++11)
находит наибольший поддиапазон, который является кучей с максимальным приоритетом
(шаблон функции)
max
возвращает большее из заданных значений
(шаблон функции)
max_element
возвращает наибольший элемент в диапазоне
(шаблон функции)
min
возвращает меньшее из заданных значений
(шаблон функции)
min_element
возвращает наименьший элемент в диапазоне
(шаблон функции)
minmax
(C++11)
возвращает меньшее и большее из двух элементов
(шаблон функции)
minmax_element
(C++11)
возвращает наименьший и наибольший элементы в диапазоне
(шаблон функции)
lexicographical_compare
возвращает true если один диапазон лексикографически меньше другого
(функция-шаблон)
next_permutation
генерирует следующее большее лексикографическое перестановку диапазона элементов
(функция-шаблон)
prev_permutation
генерирует следующую меньшую лексикографическую перестановку диапазона элементов
(функция-шаблон)

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/Compare

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API