2010-06-23 23 views
3

Est-il possible qu'un multimap contienne des paires? IE, plutôt que d'être défini comme multimap<char,int> par exemple, il serait défini comme multimap<pair, pair>?Multimap contenant des paires?

Comment ce multimap serait-il ensuite trié? De même, comment accéder au contenu individuel de chaque paire?

Répondre

9

Est-il possible qu'un multimap contienne des paires?

Oui c'est possible.

Comment ce multimap serait-il ensuite trié?

Par la clé/première paire (c'est-à-dire d'abord par le premier élément de la première paire, puis par le deuxième élément de la première paire).

De même, comment accéder au contenu individuel de chaque paire?

multimap<pair <T1, T2>, pair<T3, T4> >::iterator it = mymultimap.begin(); 
it->first.first; 
it->first.second; 
it->second.first; 
it->second.second; 

En d'autres termes, une multimap de paires fonctionne exactement comme prévu!

Mise à jour: Aussi, je voudrais ajouter que je déconseille l'utilisation de paires de paires, il rend le code très difficile à lire, utiliser struct avec de vrais noms de variables au lieu.

+0

Petit point, vous devez définir l'opérateur '<' pour la comparaison ou fournir un objet qui compare ces paires dans la définition de multimap – Artyom

+2

Vous ne devez pas définir l'opérateur MSalters

+2

@Artyom: l'opérateur