Bonsoir,

Je cherche désespéremment à trier un std::map<MA_STRUCTURE*, MA_VALUE*> avec std::sort mais rien à faire ca ne compile pas
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
 
struct IdBloc
{
    int id;
    std::string name;
};
 
struct Bloc { ... }
 
// Foncteur
bool comp(const std::pair<IdBloc*, std::vector<Bloc*> >& a1,
        const std::pair<IdBloc*, std::vector<Bloc*> >& a2
        )
{
    return a1.second < a2.second;
}
 
// Définition de la map
std::map<IdBloc*, std::vector<Bloc*> > m_blocs;
 
// Tente un tri qui compile pas
std::sort(m_blocs.begin(), m_blocs.end(), comp);
J'ai du loupé quelque chose, ca marche très bien avec un std::vector mais pas avec une std::map.
Normalement c'est possible de trier par clé (je me demande même si c'est pas censé être automatique ?) mais dans mon cas, la clé n'est pas un type de base comme int, float, double... mais une structure donc il faut un "foncteur/prédicat de comparaison"

Merci à vous et bonne soirée