C++ named requirements: Compare
Compare es un conjunto de requisitos esperados por algunas de las facilidades de la biblioteca estándar para los tipos de objetos función proporcionados por el usuario.
El valor de retorno de la operación de llamada a función aplicada a un objeto de un tipo que satisface Compare , cuando se convierte a bool , produce true si el primer argumento de la llamada aparece antes que el segundo en la relación de ordenamiento estricto débil inducida por este tipo, y false en caso contrario.
Como con cualquier BinaryPredicate , la evaluación de esa expresión no puede llamar a funciones no constantes a través de los iteradores desreferenciados y, sintácticamente, la operación de llamada a función debe aceptar const argumentos de objeto, con el mismo comportamiento independientemente de si los argumentos son const o no const .
Contenidos |
Requisitos
El tipo
T
satisface
Compare
si
-
El tipo
Tsatisface BinaryPredicate , y
Dado
-
comp, un objeto de tipoT, - equiv ( a, b ) , una expresión-equivalente a ! comp ( a, b ) && ! comp ( b, a ) .
Las siguientes expresiones deben ser válidas y tener sus efectos especificados:
| Expresión | Tipo de retorno | Requisitos | ||||
|---|---|---|---|---|---|---|
| comp ( a, b ) |
|
Establece una relación de
ordenamiento débil estricto
con las siguientes propiedades:
|
||||
| equiv ( a, b ) | bool |
Establece una relación de
equivalencia
con las siguientes propiedades:
|
Nota:
comp
induce un
orden total estricto
en las clases de equivalencia determinadas por
equiv
.
Biblioteca estándar
Las siguientes facilidades de la biblioteca estándar esperan un tipo Compare .
|
colección de claves únicas, ordenadas por claves
(class template) |
|
|
colección de pares clave-valor, ordenados por claves, las claves son únicas
(class template) |
|
|
colección de claves, ordenadas por claves
(plantilla de clase) |
|
|
colección de pares clave-valor, ordenados por claves
(plantilla de clase) |
|
|
adapta un contenedor para proporcionar cola de prioridad
(plantilla de clase) |
|
|
ordena un rango en orden ascendente
(plantilla de función) |
|
|
ordena los elementos
(función miembro pública de
std::forward_list<T,Allocator>
)
|
|
|
ordena los elementos
(función miembro pública de
std::list<T,Allocator>
)
|
|
|
ordena un rango de elementos preservando el orden entre elementos iguales
(plantilla de función) |
|
|
ordena los primeros N elementos de un rango
(function template) |
|
|
copia y ordena parcialmente un rango de elementos
(plantilla de función) |
|
|
(C++11)
|
verifica si un rango está ordenado en orden ascendente
(plantilla de función) |
|
(C++11)
|
encuentra el subrango ordenado más grande
(plantilla de función) |
|
ordena parcialmente el rango dado asegurando que esté particionado por el elemento especificado
(plantilla de función) |
|
|
devuelve un iterador al primer elemento
no menor
que el valor dado
(plantilla de función) |
|
|
devuelve un iterador al primer elemento
mayor
que cierto valor
(plantilla de función) |
|
|
determina si un elemento existe en un rango parcialmente ordenado
(plantilla de función) |
|
|
devuelve el rango de elementos que coinciden con una clave específica
(plantilla de función) |
|
|
combina dos rangos ordenados
(function template) |
|
|
fusiona dos listas ordenadas
(función miembro pública de
std::forward_list<T,Allocator>
)
|
|
|
fusiona dos listas ordenadas
(función miembro pública de
std::list<T,Allocator>
)
|
|
|
combina dos rangos ordenados in situ
(plantilla de función) |
|
|
devuelve
true
si una secuencia es una subsecuencia de otra
(plantilla de función) |
|
|
calcula la diferencia entre dos conjuntos
(plantilla de función) |
|
|
calcula la intersección de dos conjuntos
(plantilla de función) |
|
|
calcula la diferencia simétrica entre dos conjuntos
(plantilla de función) |
|
|
calcula la unión de dos conjuntos
(plantilla de función) |
|
|
agrega un elemento a un montículo máximo
(plantilla de función) |
|
|
elimina el elemento más grande de un montículo máximo
(plantilla de función) |
|
|
crea un montículo máximo a partir de un rango de elementos
(plantilla de función) |
|
|
convierte un montículo máximo en un rango de elementos ordenados de forma ascendente
(plantilla de función) |
|
|
(C++11)
|
verifica si el rango dado es un max heap
(function template) |
|
(C++11)
|
encuentra el subrango más grande que es un max heap
(plantilla de función) |
|
devuelve el mayor de los valores dados
(plantilla de función) |
|
|
devuelve el elemento más grande en un rango
(function template) |
|
|
devuelve el menor de los valores dados
(plantilla de función) |
|
|
devuelve el elemento más pequeño en un rango
(plantilla de función) |
|
|
(C++11)
|
devuelve el menor y el mayor de dos elementos
(plantilla de función) |
|
(C++11)
|
devuelve los elementos más pequeño y más grande en un rango
(plantilla de función) |
|
devuelve
true
si un rango es lexicográficamente menor que otro
(plantilla de función) |
|
|
genera la siguiente permutación lexicográfica mayor de un rango de elementos
(plantilla de función) |
|
|
genera la siguiente permutación lexicográfica más pequeña de un rango de elementos
(plantilla de función) |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
la convertibilidad contextual de tipos de retorno a
bool
no
reflejaba la práctica de las implementaciones |
requisitos corregidos |
| LWG 3031 | C++98 | los requisitos sobre valores const eran insuficientes | requisitos reforzados |
Véase también
|
(C++20)
|
especifica que una
relation
impone un ordenamiento estricto débil
(concepto) |
| Operadores de comparación |
<
,
<=
,
>
,
>=
,
==
,
!=
, y
<=>
(C++20)
, comparan los argumentos
|