2010-08-03 6 views
0

J'ai un std::vector<std::string> qui contiendrait des chiffres et des caractères (caractère unique). Je voudrais avoir des nombres triés d'abord suivis par les caractères ... ainsi j'ai un vecteur de cordes pêle-mêle comme entrée et après le tri je le veux comme 1,2,3,5,7,9,10, A, B, C, D. Mais je suppose que le tri compare aussi les tailles des entrées, et donc si mon vecteur a des nombres de longueurs différentes, je reçois une mauvaise sortie. Par exemple, en faisant std::sort (vec.begin(),vec.end()) sur 9,4,5,2,10,11,A,D,B,E,C renvoie 10,11,2,4,5,9,A,B,C,D,E.std :: trier sur std :: vector <std::string>

Comment corriger mon erreur et qu'est-ce qui me manque?

Merci,
Sayan

Répondre

1

écrire une routine de comparaison non lexicographiques et le transmettre avec les itérateurs à std :: sort.

+0

Je suppose qu'un tri lexicographique utilise ascii pour comparer par défaut. Merci, écrirait un personnalisé comme vous avez suggéré. – Sayan

Questions connexes