multimap
Un multimap est analogue à un map sauf que ses éléments peuvent posséder des clés dupliquées. La définition de la classe multimap est donc similaire à celle de la classe conteneur map, à quelques exceptions près. Elle ne fournit pas l’opérateur index [] puisque plusieurs éléments peuvent posséder la même valeur de clé. L’opération d’insertion réussit toujours, les clés dupliquées étant autorisées. Pour utiliser un conteneur map, vous devez inclure le fichier en-tête <map> au début du programme et travailler dans l’espace de noms std.
Code 8.14 : utilisation de la classe multimap
#include <iostream>
#include <string>
#include <map>
using namespace std;
template<class Cle, class T>
void AfficherMultimap(const multimap<Cle, T>& m);
template<class Cle, class T>
void AfficherMultimapRange(const multimap<Cle, T>& m, const Cle& k);
int main()
{
//On crée un multimap
multimap<string, string> MonMultimap;
//On y stocke des éléments
MonMultimap.insert(make_pair((string)"cle_1", (string)"Elément 1"));
MonMultimap.insert(make_pair((string)"cle_1", (string)"Elément 2"));
MonMultimap.insert(make_pair((string)"cle_1", (string)"Elément 3"));
MonMultimap.insert(make_pair((string)"cle_2", (string)"Elément 4"));
MonMultimap.insert(make_pair((string)"cle_3", (string)"Elément 5"));
cout << "Voici le contenu de notre multimap:\n";
AfficherMultimap(MonMultimap);
cout << "Voici les éléments de valeur de";
cout << " clé \"cle_1\":\n";
AfficherMultimapRange(MonMultimap, (string)"cle_1");
}
template<class Cle, class T>
void AfficherMultimap(const multimap<Cle, T>& m)
{
typedef typename multimap<Cle, T>::const_iterator Itor;
for (Itor i = m.begin(); i != m.end(); ++i)
cout << i->first << "\t" << i->second << "\n";
cout << "\n";
}
template<class Cle, class T>
void AfficherMultimapRange(const multimap<Cle, T>& m, const Cle& k)
{
typedef typename multimap<Cle, T>::const_iterator Itor;
pair<Itor, Itor> p = m.equal_range(k);
for (Itor i = p.first; i != p.second; ++i)
cout << i->first << "\t" << i->second << "\n";
cout << "\n";
}
Voici le résultat de l’exécution de ce code :
Voici le contenu de notre multimap:
cle_1 Elément 1
cle_1 Elément 2
cle_1 Elément 3
cle_2 Elément 4
cle_3 Elément 5
Voici les éléments de valeur de clé "cle_1":
cle_1 Elément 1
cle_1 Elément 2
cle_1 Elément 3
Notez que la fonction AfficherMultimapRange() utilise equal_range() pour obtenir le premier et le dernier élément possédant la même valeur de clé.
Le texte original de cette fiche pratique est extrait de
«
Tout sur le C++» (Christine EBERHARDT, Collection
CommentCaMarche.net, Dunod, 2009)
Dernière modification le mercredi 25 novembre 2009 à 09:31:17