C++ named requirements: Compare
Compare est un ensemble d'exigences attendues par certaines fonctionnalités de la bibliothèque standard pour les types d'objets fonction fournis par l'utilisateur.
La valeur de retour de l'opération d'appel de fonction appliquée à un objet d'un type satisfaisant Compare , lorsqu'elle est convertie en bool , donne true si le premier argument de l'appel apparaît avant le second dans la relation d'ordre strict faible induite par ce type, et false sinon.
Comme pour tout BinaryPredicate , l'évaluation de cette expression ne doit pas appeler de fonctions non constantes via les itérateurs déréférencés et, syntaxiquement, l'opération d'appel de fonction doit accepter const des arguments objets constants, avec le même comportement que les arguments soient const ou non- const .
Table des matières |
Exigences
Le type
T
satisfait
Compare
si
-
Le type
Tsatisfait BinaryPredicate , et
Étant donné
-
comp, un objet de typeT, - equiv ( a, b ) , une expression-équivalente à ! comp ( a, b ) && ! comp ( b, a ) .
Les expressions suivantes doivent être valides et avoir leurs effets spécifiés :
| Expression | Type de retour | Exigences | ||||
|---|---|---|---|---|---|---|
| comp ( a, b ) |
|
Établit une relation d'
ordre strict faible
avec les propriétés suivantes :
|
||||
| equiv ( a, b ) | bool |
Établit une relation d'
équivalence
avec les propriétés suivantes :
|
Note :
comp
induit un
ordre total strict
sur les classes d'équivalence déterminées par
equiv
.
Bibliothèque standard
Les fonctionnalités suivantes de la bibliothèque standard attendent un type Compare .
|
collection de clés uniques, triées par clés
(modèle de classe) |
|
|
collection de paires clé-valeur, triées par clés, les clés sont uniques
(modèle de classe) |
|
|
collection de clés, triées par clés
(modèle de classe) |
|
|
collection de paires clé-valeur, triées par clés
(modèle de classe) |
|
|
adapte un conteneur pour fournir une file de priorité
(modèle de classe) |
|
|
trie une plage en ordre croissant
(modèle de fonction) |
|
|
trie les éléments
(fonction membre publique de
std::forward_list<T,Allocator>
)
|
|
|
trie les éléments
(fonction membre publique de
std::list<T,Allocator>
)
|
|
|
trie une plage d'éléments en préservant l'ordre entre les éléments égaux
(modèle de fonction) |
|
|
trie les N premiers éléments d'une plage
(modèle de fonction) |
|
|
copie et trie partiellement une plage d'éléments
(modèle de fonction) |
|
|
(C++11)
|
vérifie si une plage est triée par ordre croissant
(modèle de fonction) |
|
(C++11)
|
trouve la plus grande sous-plage triée
(modèle de fonction) |
|
trie partiellement la plage donnée en s'assurant qu'elle est partitionnée par l'élément donné
(modèle de fonction) |
|
|
retourne un itérateur vers le premier élément
non inférieur
à la valeur donnée
(modèle de fonction) |
|
|
retourne un itérateur vers le premier élément
supérieur
à une certaine valeur
(modèle de fonction) |
|
|
détermine si un élément existe dans une plage partiellement ordonnée
(modèle de fonction) |
|
|
retourne la plage d'éléments correspondant à une clé spécifique
(modèle de fonction) |
|
|
fusionne deux plages triées
(modèle de fonction) |
|
|
fusionne deux listes triées
(fonction membre publique de
std::forward_list<T,Allocator>
)
|
|
|
fusionne deux listes triées
(fonction membre publique de
std::list<T,Allocator>
)
|
|
|
fusionne deux plages ordonnées en place
(modèle de fonction) |
|
|
renvoie
true
si une séquence est une sous-séquence d'une autre
(modèle de fonction) |
|
|
calcule la différence entre deux ensembles
(modèle de fonction) |
|
|
calcule l'intersection de deux ensembles
(modèle de fonction) |
|
|
calcule la différence symétrique entre deux ensembles
(modèle de fonction) |
|
|
calcule l'union de deux ensembles
(modèle de fonction) |
|
|
ajoute un élément à un tas max
(modèle de fonction) |
|
|
supprime le plus grand élément d'un tas maximum
(modèle de fonction) |
|
|
crée un tas maximal à partir d'une plage d'éléments
(modèle de fonction) |
|
|
transforme un tas maximum en une plage d'éléments triés par ordre croissant
(modèle de fonction) |
|
|
(C++11)
|
vérifie si la plage donnée est un tas maximum
(modèle de fonction) |
|
(C++11)
|
trouve la plus grande sous-plage qui est un tas maximum
(modèle de fonction) |
|
renvoie la plus grande des valeurs données
(modèle de fonction) |
|
|
renvoie le plus grand élément dans une plage
(modèle de fonction) |
|
|
renvoie la plus petite des valeurs données
(modèle de fonction) |
|
|
renvoie le plus petit élément dans une plage
(modèle de fonction) |
|
|
(C++11)
|
renvoie le plus petit et le plus grand de deux éléments
(modèle de fonction) |
|
(C++11)
|
renvoie les plus petits et les plus grands éléments dans une plage
(modèle de fonction) |
|
renvoie
true
si une plage est lexicographiquement inférieure à une autre
(modèle de fonction) |
|
|
génère la prochaine permutation lexicographique supérieure d'une plage d'éléments
(modèle de fonction) |
|
|
génère la permutation lexicographique précédente d'une plage d'éléments
(modèle de fonction) |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
|
LWG 2114
( P2167R3 ) |
C++98 |
la convertibilité contextuelle des types de retour vers
bool
ne reflétait
pas la pratique des implémentations |
exigences corrigées |
| LWG 3031 | C++98 | les exigences sur les valeurs const étaient insuffisantes | exigences renforcées |
Voir aussi
|
(C++20)
|
spécifie qu'une
relation
impose un ordre strict faible
(concept) |
| Opérateurs de comparaison |
<
,
<=
,
>
,
>=
,
==
,
!=
, et
<=>
(C++20)
, comparent les arguments
|