Namespaces
Variants

C++ named requirements: Compare

From 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 .

Table des matières

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 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)
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)
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)
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

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