C ++ trier un tableau de chaînes
Je suis en train de trier un tableau de chaînes de caractères, mais ce n'est pas le tri de quoi que ce soit.... ce que je fais mal?
string namesS[MAX_NAMES];
int compare (const void * a, const void * b){
return ( *(char*)a - *(char*)b );
}
void sortNames(){
qsort(namesS, MAX_NAMES, sizeof(string), compare);
}
source d'informationauteur user69514 | 2010-05-10
Vous devez vous connecter pour publier un commentaire.
C'est le C++, pas C. le Tri d'un tableau de chaînes de caractères est facile.
std::qsort
est hérité de la bibliothèque standard C. Il ne fonctionnera pas.Vous devez utiliser
std::sort
pour le tri des chaînes.Spécifiquement, fonte
std::string
àvoid*
puis àchar*
est pas défini et ne fonctionne pas.algorithme de tri en RPC a la même complexité que qsort:
Vous pouvez utiliser boost::sort, comme ceci:
Si vous souhaitez en utiliser, utiliser boost::rechercher, comme ceci:
Voir 2 fonctions utiles (m_stringarray doit être membre de ClassA):
Comme beaucoup ici ont déclaré, vous pouvez utiliser std::sort pour trier, mais ce qui se passe lorsque, par exemple, à trier de z-a? Ce code peut être utile
Si vous voulez inverser l'ordre de tri de modifier juste le signe de la cmp de la fonction.