le fichier à inclure pour utiliser les maps#include <iostream> #include <string> #include <map>
Donc pour insérer c'est insert puis make_pair ou pour les plus courageux passer par le value_type. Remarque seul le compilateur de VC++6.0 (non patché) impose l'utilisation de la forme make_pair( string("NOVEMBRE"), 11 ) tous les autres arrivent à compiler la forme make_pair( "NOVEMBRE", 11 ). Pour ce tutorial, j'ai préféré la compatibilité.using namespace std; int main() { // Création d'un map liant des chaînes à des entiers map<string,int> mStringInt; // Insertion des mois de l'année mStringInt.insert( make_pair( string("JANVIER"), 1 ) ); mStringInt.insert( make_pair( string("FEVRIER"), 2 ) ); mStringInt.insert( make_pair( string("MARS"), 3 ) ); mStringInt.insert( make_pair( string("AVRIL"), 4 ) ); mStringInt.insert( make_pair( string("MAI"), 5 ) ); mStringInt.insert( make_pair( string("JUIN"), 6 ) ); mStringInt.insert( make_pair( string("JUILLET"), 7 ) ); mStringInt.insert( make_pair( string("AOUT"), 8 ) ); mStringInt.insert( make_pair( string("SEPTEMBRE"), 9 ) ); mStringInt.insert( make_pair( string("OCTOBRE"), 10 ) ); mStringInt.insert( make_pair( string("NOVEMBRE"), 11 ) ); mStringInt.insert( map<string,int>::value_type( string("DECEMBRE"), 12 ) );
Si l'élémen recherché n'est utile pour la suite du traitement, un simple count non nul suffit pour connaître la présence de cet élément.// Accéder à un élément cout << " AVRIL : " << mStringInt[ "AVRIL" ] << endl; // Rechercher un élément cout << " JULY ? " << ( mStringInt.find( "JULY" ) != mStringInt.end() ) << endl; cout << "SEPTEMBRE ? " << ( mStringInt.count( "SEPTEMBRE" ) ) << endl;
i->first correspond donc à la clef (le mois) et i->second à la valeur (la position)// Affichage de l'intégralité du map for( map<string,int>::const_iterator i = mStringInt.begin(); i != mStringInt.end(); ++i ) { cout << "Mois : " << i->first << ", Position : " << i->second << endl;
} }
Le map nous a donc permis de créer facilement un tableau indexé sur des chaînes. En fait, le map peut facilement créer des tableaux indexés sur n'importe quel clef-objet sur lequel une relation d'ordre peut être établie.
#include <iostream> #include <string> #include <map> using namespace std; int main() { // Création d'un map liant des chaînes à des entiers map<string,int> mStringInt; // Insertion des mois de l'année mStringInt.insert( make_pair( string("JANVIER"), 1 ) ); mStringInt.insert( make_pair( string("FEVRIER"), 2 ) ); mStringInt.insert( make_pair( string("MARS"), 3 ) ); mStringInt.insert( make_pair( string("AVRIL"), 4 ) ); mStringInt.insert( make_pair( string("MAI"), 5 ) ); mStringInt.insert( make_pair( string("JUIN"), 6 ) ); mStringInt.insert( make_pair( string("JUILLET"), 7 ) ); mStringInt.insert( make_pair( string("AOUT"), 8 ) ); mStringInt.insert( make_pair( string("SEPTEMBRE"), 9 ) ); mStringInt.insert( make_pair( string("OCTOBRE"), 10 ) ); mStringInt.insert( make_pair( string("NOVEMBRE"), 11 ) ); mStringInt.insert( map<string,int>::value_type( string("DECEMBRE"), 12 ) ); // Accéder à un élément cout << " AVRIL : " << mStringInt[ "AVRIL" ] << endl; // Rechercher un élément cout << " JULY ? " << ( mStringInt.find( "JULY" ) != mStringInt.end() ) << endl; cout << "SEPTEMBRE ? " << ( mStringInt.count( "SEPTEMBRE" ) ) << endl; // Affichage de l'intégralité du map for( map<string,int>::const_iterator i = mStringInt.begin(); i != mStringInt.end(); ++i ) { cout << "Mois : " << i->first << ", Position : " << i->second << endl; } }
00001 #include <iostream> 00002 #include <string> 00003 #include <map> 00004 using namespace std; 00005 00006 int main() 00007 { 00008 // Création d'un map liant des chaînes à des entiers 00009 map<string,int> mStringInt; 00010 00011 // Insertion des mois de l'année 00012 mStringInt.insert( make_pair( string("JANVIER"), 1 ) ); 00013 mStringInt.insert( make_pair( string("FEVRIER"), 2 ) ); 00014 mStringInt.insert( make_pair( string("MARS"), 3 ) ); 00015 mStringInt.insert( make_pair( string("AVRIL"), 4 ) ); 00016 mStringInt.insert( make_pair( string("MAI"), 5 ) ); 00017 mStringInt.insert( make_pair( string("JUIN"), 6 ) ); 00018 mStringInt.insert( make_pair( string("JUILLET"), 7 ) ); 00019 mStringInt.insert( make_pair( string("AOUT"), 8 ) ); 00020 mStringInt.insert( make_pair( string("SEPTEMBRE"), 9 ) ); 00021 mStringInt.insert( make_pair( string("OCTOBRE"), 10 ) ); 00022 mStringInt.insert( make_pair( string("NOVEMBRE"), 11 ) ); 00023 mStringInt.insert( map<string,int>::value_type( string("DECEMBRE"), 12 ) ); 00024 // Accéder à un élément 00025 cout << " AVRIL : " << mStringInt[ "AVRIL" ] << endl; 00026 00027 // Rechercher un élément 00028 cout << " JULY ? " << ( mStringInt.find( "JULY" ) != mStringInt.end() ) << endl; 00029 cout << "SEPTEMBRE ? " << ( mStringInt.count( "SEPTEMBRE" ) ) << endl; 00030 // Affichage de l'intégralité du map 00031 for( map<string,int>::const_iterator i = mStringInt.begin(); 00032 i != mStringInt.end(); ++i ) 00033 { 00034 cout << "Mois : " << i->first << ", Position : " << i->second << endl; 00035 } 00036 }