Namespaces
Variants

C++ named requirements: Compare

From fr.cppreference.net
C++ named requirements

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 .

Sommaire

Exigences

Le type T satisfait Compare si

Étant donné

Les expressions suivantes doivent être valides et avoir leurs effets spécifiés :

Expression Type de retour Exigences
comp ( a, b )

satisfait BooleanTestable

(jusqu'à C++20)

modélise boolean-testable

(depuis C++20)
Établit une relation d' ordre strict faible avec les propriétés suivantes :
  • Pour tout a , comp ( a, a ) == false .
  • Si comp ( a, b ) == true alors comp ( b, a ) == false .
  • Si comp ( a, b ) == true et comp ( b, c ) == true alors comp ( a, c ) == true .
equiv ( a, b ) bool Établit une relation d' équivalence avec les propriétés suivantes :
  • Pour tout a , equiv ( a, a ) == true .
  • Si equiv ( a, b ) == true , alors equiv ( b, a ) == true .
  • Si equiv ( a, b ) == true et equiv ( b, c ) == true , alors equiv ( a, c ) == true .

Note : comp induit un ordre total strict sur les classes d'équivalence déterminées par equiv .

Bibliothèque standard

Les composants de la bibliothèque standard suivants 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 d'éléments
(modèle de fonction & objet fonction d'algorithme)
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 tout en préservant l'ordre relatif entre les éléments équivalents
(modèle de fonction & objet fonction d'algorithme)
trie les N premiers éléments d'une plage
(modèle de fonction & objet fonction d'algorithme)
copie et trie partiellement une plage d'éléments
(modèle de fonction & objet fonction d'algorithme)
(C++11)
vérifie si une plage est triée
(modèle de fonction & objet fonction d'algorithme)
trouve la plus grande sous-plage triée
(modèle de fonction & objet fonction d'algorithme)
trouve le Nième élément si la plage était triée
(modèle de fonction & objet fonction d'algorithme)
trouve le premier élément non inférieur à la valeur donnée en utilisant la recherche binaire
(modèle de fonction & objet fonction d'algorithme)
trouve le premier élément supérieur à la valeur donnée en utilisant la recherche binaire
(modèle de fonction & objet fonction d'algorithme)
détermine si un élément existe dans une plage en utilisant la recherche binaire
(modèle de fonction & objet fonction d'algorithme)
trouve la plage d'éléments correspondant à la valeur donnée en utilisant la recherche binaire
(modèle de fonction & objet fonction d'algorithme)
fusionne deux plages triées
(modèle de fonction & objet fonction d'algorithme)
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 & objet fonction d'algorithme)
détermine si une séquence est une sous-séquence d'une autre
(modèle de fonction & objet fonction d'algorithme)
calcule la différence entre deux ensembles
(modèle de fonction & objet fonction d'algorithme)
calcule l'intersection de deux ensembles
(modèle de fonction & objet fonction d'algorithme)
calcule la différence symétrique entre deux ensembles
(modèle de fonction & objet fonction d'algorithme)
calcule l'union de deux ensembles
(modèle de fonction & objet fonction d'algorithme)
ajoute un élément à un tas max
(modèle de fonction & objet fonction d'algorithme)
supprime le plus grand élément d'un tas max
(modèle de fonction & objet fonction d'algorithme)
crée un tas max à partir d'une plage d'éléments
(modèle de fonction & objet fonction d'algorithme)
transforme un tas max en une plage d'éléments triés par ordre croissant
(modèle de fonction & objet fonction d'algorithme)
(C++11)
vérifie si la plage donnée est un tas max
(modèle de fonction & objet fonction d'algorithme)
trouve la plus grande sous-plage qui est un tas max
(modèle de fonction & objet fonction d'algorithme)
renvoie le plus grand des valeurs données
(modèle de fonction & objet fonction d'algorithme)
renvoie le plus grand élément d'une plage
(modèle de fonction & objet fonction d'algorithme)
renvoie le plus petit des valeurs données
(modèle de fonction & objet fonction d'algorithme)
renvoie le plus petit élément d'une plage
(modèle de fonction & objet fonction d'algorithme)
(C++11)
renvoie le plus petit et le plus grand de deux éléments
(modèle de fonction & objet fonction d'algorithme)
renvoie les éléments le plus petit et le plus grand d'une plage
(modèle de fonction & objet fonction d'algorithme)
compare lexicographiquement deux plages
(modèle de fonction & objet fonction d'algorithme)
génère la permutation lexicographique suivante plus grande d'une plage d'éléments
(modèle de fonction & objet fonction d'algorithme)
génère la permutation lexicographique suivante plus petite d'une plage d'éléments
(modèle de fonction & objet fonction d'algorithme)

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

spécifie qu'une relation impose un ordre strict faible
(concept)
Opérateurs de comparaison < , <= , > , >= , == , != , et <=> (C++20) , comparent les arguments