Un programmeur peut écrire sa propre fonction (). Cependant, la fonction tri () de la bibliothèque d'algorithme est susceptible de mieux fonctionner que ce que le programmeur ordinaire écrit.
La fonction tri () peut trier les valeurs d'un vecteur dans l'ordre croissant ou dans l'ordre descendant. Pour trier un vecteur, la bibliothèque d'algorithmes doit être incluse. La bibliothèque vectorielle doit également être incluse. Le début du programme devrait être quelque chose comme:
#inclureLe vecteur est en fait une classe, à partir de laquelle les objets vectoriels peuvent être créés. Avec la section supérieure ci-dessus du programme, un vecteur à tri, peut être créé comme suit:
vecteurLe nom de la classe est un vecteur. Le nom de l'objet instancié est vtr.
Dans ce tutoriel, le codage de tri se fait dans la fonction c ++ main (). Ce tutoriel explique comment trier un vecteur C ++ en utilisant le vecteur ci-dessus, VTR.
Contenu de l'article
Tri par défaut
Le tri par défaut trie dans l'ordre croissant. La syntaxe pour ceci est:
modèleTrier tout le vecteur
Le code suivant trie tout le vecteur:
trier (vtr.begin (), vtr.fin());La liste triée est:
A, B, C, D, M, N, S, V, X, Z,qui est correct. Si le tri n'est pas correct, alors le défaut est celui du programmeur et non celui de la fonction tri ().
Le RandomAccessiterator est intrinsèque. vtr.begin () Renvoie un itérateur qui pointe vers le premier élément, et vtr.end () renvoie un autre itérateur du même type qui pointe juste après le dernier élément. Il n'est donc pas nécessaire d'instancier un vecteur indiquant, RandomAccessiterator. De cette façon, toute la liste est triée.
Trier une plage d'ordre croissant
La liste non triée ci-dessus compte dix éléments avec des index:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9Pour trier uniquement les éléments de la position 4, qui est l'index, 3 = 4 - 1, à la position 9, qui est l'index, 8 = 9 - 1, ajouter 3 à Vtr.begin () pour avoir le premier itérateur, puis ajouter 8 à Vtr.begin () pour avoir le dernier itérateur, pour la fonction tri (). Le 9e L'élément de l'index 8 ne sera pas inclus dans le tri. C'est-à-dire que le dernier élément indiqué dans la plage choisie est exclu pour le tri. Le code suivant illustre ceci:
trier (vtr.begin () + 3, vtr.begin () + 8);Les éléments des positions 4, 5, 6, 7, 8 ont été triés. L'élément du 9e La position n'a pas été incluse dans le type. Ces positions correspondent aux indices 3, 4, 5, 6, 7. L'élément de l'index 8 n'a pas été inclus dans le type.
Donc, pour trier une gamme, identifiez les premier et dernier éléments de la gamme, pas nécessairement de toute la liste. Ajouter l'index du premier élément à l'itérateur Begin (). Ajouter l'index du dernier élément, toujours à l'itérateur Begin (). N'oubliez pas que le dernier élément de la gamme ne sera pas inclus dans le type, mais le premier élément de la gamme sera inclus.
L'ajout d'un index à un itérateur est possible car l'ajout d'un nombre est le même que l'intégration de l'itérateur ce même nombre de fois. L'incrémentation d'un itérateur fait une fois un point vers l'élément suivant.
Tri dans l'ordre descendant
La syntaxe est:
modèleCela diffère de la syntaxe ci-dessus avec la présence de «comparer comp». Comp est un pointeur de fonction ou un objet de fonction. Comp décide en fait si le tri doit être ascendant ou descendant. Son absence est le cas par défaut, ce qui signifie descendant.
Trier toute la liste en ordre décroissant
Le code suivant trie tout le vecteur ci-dessus dans l'ordre descendant:
trier (vtr.begin (), vtr.end (), plus grandLe vecteur trié par ordre décroissant est:
Z, X, V, S, N, M, D, C, B, A,Notez l'utilisation de «plus grand ()» à la place de la comp.
L'opposé de plus grand () est moins (), qui est la valeur par défaut (ascendant), et n'a pas à être dactylographié.
Trier une gamme d'ordre descendant
Une gamme peut être triée par ordre décroissant ainsi qu'en ordre ascendant. Le code suivant trie le 4e au 9e élément sans inclure le 9e élément; et descendant.
trier (vtr.begin () + 3, vtr.begin () + 8, plus grandLe vecteur avec sa gamme choisie, trié par ordre décroissant, est:
Z, X, C, V, N, M, B, A, S, D,Fonction de comparaison personnalisée
Le programme suivant a une fonction de comparaison personnalisée pour le tri ascendant:
#inclureLa fonction pour faire la comparaison est appelée compare. Il renvoie un bool. Il a deux paramètres, A et B, du même type, que le type d'élément vectoriel. Il renvoie vrai si A est inférieur à B et faux sinon. Le nom de cette fonction est le troisième argument de l'appel de fonction tri (). Dans ce programme, comparer est le même que moins (). Certains autres noms au lieu de comparer peuvent être utilisés.
La liste non triée est:
Z, X, C, V, B, N, M, A, S, DLa liste triée est:
A, B, C, D, M, N, S, V, X, Z,Bien sûr, la fonction de comparaison personnalisée peut être utilisée pour une gamme. Le programme suivant illustre ceci:
#inclureLa liste non triée est:
Z, X, C, V, B, N, M, A, S, DLa liste triée est:
Z, X, C, A, B, M, N, V, S, D,La fonction de comparaison peut être codée pour la descendance. Le programme suivant illustre ceci:
#inclureChangez juste (A B).
La liste non triée est:
Z, X, C, V, B, N, M, A, S, DLa liste triée est:
Z, X, V, S, N, M, D, C, B, A,La fonction de comparaison personnalisée peut être utilisée pour une gamme, en ordre décroissant. Le programme suivant illustre ceci:
#inclureLa liste non triée est:
Z, X, C, V, B, N, M, A, S, DLe vecteur avec sa gamme choisie, trié par ordre décroissant, est:
Z, X, C, V, N, M, B, A, S, D,Autres types de données
D'autres types de données peuvent être triés à l'aide de leurs types. Par exemple, si le type de données int doit être trié, alors «int» serait utilisé pour créer le vecteur et dans la fonction comparement intégrée ou personnalisée. Si le type de données est dans une bibliothèque, alors l'en-tête de la bibliothèque doit être inclus dans le programme, comme dans le cas de la chaîne ci-dessous:
#inclureLa liste non triée est:
Ze, xe, ce, ve, be, ne, moi, ae, se, deLa liste triée est:
Ze, xe, ve, se, ne, moi, de, ce, be, ae,Conclusion
C ++ est livré avec la bibliothèque d'algorithme qui a une fonction tri (). Cette fonction prend deux ou trois arguments dans son utilisation normale. Le premier argument est dans lequel la liste vectorielle, le type doit commencer. Le deuxième argument est dans lequel la liste vectorielle, le type devrait se terminer. Le troisième argument détermine si le tri doit être fait dans l'ordre croissant ou dans l'ordre décroissant.