à l'aide de sort() dans la STL pour trier un tableau
Je suis en train d'écrire du code pour une question qui est: Écrire une méthode pour trier un tableau de chaînes, de sorte que tous les anagrammes sont à côté les uns des autres.
Si mon conteneur est un vecteur, il sera très simple, depuis le vecteur a itérateur et peut être utilisé dans la STL fonction de tri qui est le code ci-dessous:
Mais que faire si le conteneur est un tableau? Tableau a pas d'itérateur et ne peut pas utiliser de sort() pour trier le tableau directement. Je voudrais savoir est-il possible de créer un tableau itérateur afin que je puisse utiliser de tri() pour trier le tableau directement?
Merci!!!!
#include <iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
bool compare(string s1, string s2){
sort(s1.begin(), s1.end()); //sort return void, not the sorted result!!!!!!!!!!
sort(s2.begin(), s2.end());
return s1<=s2;
}
void sort_string(vector<string> &v){
sort(v.begin(), v.end(), compare);
}
#
If I want to use array itertor:
bool compare(string s1, string s2){
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
return s1<=s2;
}
int sortStrarr(string strarr[], int len){
//sort(strarr's iterator.begin, strarr's iterator.end, compare); ???
}
OriginalL'auteur bunny | 2013-03-27
Vous devez vous connecter pour publier un commentaire.
Que (comme en C) tableau peut être utilisé pour pointeur vers le premier élément (mais s'il vous plaît, ne confondez pas le tableau avec la souris), vous pouvez utiliser des pointeurs pour déterminer de début et de fin, de sorte que vous écrivez:
ou si vous utilisez C++11 (ou Boost) vous pouvez utiliser
array
classe:std::array<string,N>[]
qui ressemble pour moi comme un tableau de stdarray..OriginalL'auteur Hauleth
Pointeurs peuvent agir comme des itérateurs, donc vous avez juste besoin de pointeurs de début et juste après la fin du tableau.
sort(strarr, strarr+len)
va faire, grâce à l'aiguille de l'arithmétiqueMerci!!!! Il travaille maintenant~~~~
OriginalL'auteur Jerry Coffin
Vous pouvez utiliser
sort()
pour un tableau. Les pointeurs agir comme des itérateurs.Exemple:
et la sortie est:
OriginalL'auteur Johnny Mnemonic
OriginalL'auteur qPCR4vir
Nous devons utiliser la fonction de tri pour trier le tableau de chaîne.
OriginalL'auteur
Des fonctions gratuites
std::begin()
etstd::end()
(depuis C++11) sont spécialisés par type de matrice, mais la taille doit être connu du compilateur:Si vous avez seulement le début et la (run-time) taille, vous pouvez utiliser des pointeurs comme les itérateurs:
OriginalL'auteur Toby Speight