95 votes

Comment utiliser std::sort pour trier un tableau en C++ ?

Comment utiliser la bibliothèque de modèles standard std::sort() pour trier un tableau déclaré comme int v[2000] ;

Le C++ fournit-il une fonction permettant d'obtenir l'indice de début et de fin d'un tableau ?

2voto

rashedcs Points 976

vous pouvez utiliser la fonction sort() dans la STL C++. Fonction sort() Syntaxe :

 sort(array_name, array_name+size)      

 So you use  sort(v, v+2000);

2voto

risheek reddy Points 29

C'est aussi simple que cela... Le C++ vous fournit une fonction dans la STL (Standard Template Library) appelée sort qui est de 20 à 50 % plus rapide que le tri rapide codé à la main.

Voici un exemple de code pour son utilisation :

std::sort(arr, arr + size);

1voto

user5465465465 Points 11
//sort by number
bool sortByStartNumber(Player &p1, Player &p2) {
    return p1.getStartNumber() < p2.getStartNumber();
}
//sort by string
bool sortByName(Player &p1, Player &p2) {
    string s1 = p1.getFullName();
    string s2 = p2.getFullName();
    return s1.compare(s2) == -1;
}

1voto

L. F. Points 11270

Avec la bibliothèque Ranges qui arrive en C++20, vous pouvez utiliser

ranges::sort(arr);

directement, où arr est un tableau intégré.

0voto

Mike K Points 1

Votre question demande comment utiliser std::sort mais pour l'exemple que vous avez donné, vous pourriez aussi considérer que qsort : http://www.cplusplus.com/reference/cstdlib/qsort/

int compareInt(const void* p1, const void* p2) {
  const int f1 = *(const int*) p1;
  const int f2 = *(const int*) p2;
  if (f1 == f2) return 0;
  return (f1 > f2) ? 1 : -1;
}

qsort(v, (sizeof v)/(sizeof v[0]), sizeof v[0], compareInt);

Cette solution peut être plus rapide pour les très grandes matrices. Elle n'utilise pas std::sort comme vous l'avez demandé, et n'est peut-être pas aussi sûr que les solutions OO proposées, mais j'ai pensé qu'il valait la peine de le mentionner. qsort fonctionnera aussi bien en C qu'en C++.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X