Bonjour, je veux trier les éléments d'une map qui ont la structure ChaineDeCaractèreCst_entier (voir debut_marqueurconcat.str() dans le code ci après).

Je veux faire le trie en fonction de la valeur de l'entier ( curDm->first dans le code ci après).

Exemple pour le jeu d'élément (2 6 5 8 3) les rangs seront ( 2-> 1er, 6 ->4 ième ........8-> 5ième).

Mon code marche bien mais il fait le trier selon les valeurs croissantes de la chaine de caractère ( debut_marqueurconcat.str() ) elle même.

Quelqu'un saurait il comment faire svp?

Merci d'avance!


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
for(map<string, multimap<int, string> >::iterator curEspece = FamillesTrieesParEspece.begin(); curEspece!= FamillesTrieesParEspece.end(); ++curEspece)
            {
                multimap<string, int> LocalDm2Rang; //Dm - Rang
                string curEspeceName = curEspece -> first;
                unsigned int rang=1; 
 
 
 
                    for(multimap<int, string>::iterator curDm = curEspece ->second.begin(); curDm != curEspece ->second.end(); ++curDm){
 
                            std::ostringstream  debut_marqueurconcat;
                            std::string espace = "_";
                            debut_marqueurconcat << curEspeceName << "_" << curDm->first ;
 
                    LocalDm2Rang.insert(pair< string, int> (debut_marqueurconcat.str(), rang));
                    curDmat.insert(pair< string, string> (debut_marqueurconcat.str(), curDm->second));
                    rang++;
 
 
                      /*fichierF << curEspece -> first;
                      fichierF <<" "<< curDm  -> first << " : " ;//Dm;
                      fichierF <<" "<< curDm  -> second << " : " ;//Famille ;
                      fichierF << rang  << endl;*/
 
 
                   }
                    Dm2rangParEspece.insert(pair <string, multimap<string, int> > (curEspeceName , LocalDm2Rang)); // Associe Espece <Dm , Rang>