Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trier une map sur la clé et sur le deuxième élément

3 réponses
Avatar
Michaël Delva
Bonjour à tous,

j'ai la multimap suivante:

std::multimap<int,LONGLONG> liste_clics;

Elle se trie toute seule en fonction de la clé, mais je voudrais
également que cette map soit triée en fonction du LONGLONG...

Comment je peux faire ça, sachant que std::sort() ne fonctionne pas avec
une multimap?

Merci d'avance

3 réponses

Avatar
Fabien LE LEZ
On 23 Feb 2004 14:32:06 GMT, "Michaël Delva"
wrote:

std::multimap<int,LONGLONG> liste_clics;

Elle se trie toute seule en fonction de la clé, mais je voudrais
également que cette map soit triée en fonction du LONGLONG...


struct MaPaire
{
int i;
LONGLONG ll;
bool operator < (MaPaire const& rhs) const
{
if (i<rhs.i) return true;
if (i>rhs.i) return false;
return ll < rhs.ll;
}
};

std::set <MaPaire> liste_clics;

--
;-)

Avatar
Michaël Delva
Fabien LE LEZ wrote in
news::

struct MaPaire
{
int i;
LONGLONG ll;
bool operator < (MaPaire const& rhs) const
{
if (i<rhs.i) return true;
if (i>rhs.i) return false;
return ll < rhs.ll;
}
};

std::set <MaPaire> liste_clics;




Ok, merci, mais maintenant je n'arrive plus à chercher une valeur dedans...

Comment ça marcherait avec std::find()?

Je dois bien avouer que je n'arrive pas à utiliser les prédicats :-(

Merci d'avance

Avatar
Ivan Vecerina
"Michaël Delva" wrote in message
news:
Fabien LE LEZ wrote in
news::

struct MaPaire
{
...


};

std::set <MaPaire> liste_clics;



En fait, on peut aussi directement écrire:
std::set< std::pair<int,LONGLONG> > liste_clics;

Ok, merci, mais maintenant je n'arrive plus à chercher une valeur
dedans...


Comment ça marcherait avec std::find()?


Pour des raisons de performance, il vaut probablement mieux utiliser
une fonction membre de std::set plutôt qu'un algorithme plus général.

Peut-être utiliser l'intervalle:
liste_clics.lower_bound( std::make_pair(mon_int, MIN_LONGLONG) )
.. liste_clics.lower_bound( std::make_pair(mon_int+1, MIN_LONGLONG) )


Je dois bien avouer que je n'arrive pas à utiliser les prédicats :-(


Un alternative peut-être plus simple, en fonction des opérations
à effectuer sur la collection:
std::map< int, std::set<LONGLONG> > liste_clics;


Salutations,
Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- e-mail contact form