template<class First, class Second> struct pair
{
// Autres membres de structure
First first;
Second second;
};
#include <iostream>
#include <string>
#include <map>
using namespace std;
class MaClasse
{
public:
//constructeurs
MaClasse():v1("Objet nouveau"), v2(0) {}
MaClasse(string valeur1, int valeur2 = 0):
v1(valeur1), v2(valeur2) {}
//Fonctions d’accès
void DefinirValeur(string valeur1) { v1 = valeur1; }
void DefinirValeur(int valeur2) { v2 = valeur2; }
string LireValeur() const { return v1; }
int LireValeur2() const { return v2; }
//opérateur << surchargé
friend ostream& operator<<(ostream& sortie, const MaClasse& p)
{
sortie << "Chaîne: " << p.v1
<< "\tValeur: " << p.v2;
return sortie;
}
private:
string v1;
int v2;
};
// Fonction modèle d’affichage des éléments d’un map
template<class T, class A>
void AfficherMap(const map<T, A>& m);
int main()
{
//On crée 3 objets
MaClasse objet1("Objet 1", 10);
MaClasse objet2("Objet 2", 20);
MaClasse objet3("Objet 3", 30);
//On crée le map
map<string, MaClasse> MonMap;
//On initialise les éléments
MonMap[objet1.LireValeur()] = objet1;
MonMap[objet2.LireValeur()] = objet2;
MonMap[objet3.LireValeur()] = objet3;
AfficherMap(MonMap);
//On affiche la valeur de objet1
cout << "Voici les valeurs de objet1: " << MonMap["Objet 1"].LireValeur();
cout << "\t" << MonMap["Objet 1"].LireValeur2() << endl;
//On modifie les 2 valeurs de objet2
MonMap["Objet 2"].DefinirValeur("Objet 2 bis");
MonMap["Objet 2"].DefinirValeur(22);
cout << "Voici les nouvelles valeurs de objet2: ";
cout << MonMap["Objet 2"].LireValeur() << "\t";
cout << MonMap["Objet 2"].LireValeur2() << "\n";
cout << "On ajoute au map : Chaîne: Objet 1 Valeur: 40\n";
MaClasse objet4("Objet 1", 40);
MonMap[objet4.LireValeur()] = objet4;
AfficherMap(MonMap);
// Les diverses fonctions d’accès relatives à l’objet 1
cout << "\nVoici le nombre d’objets 1 : ";
cout << MonMap.count("Objet 1") << "\n";
//On cherche le premier objet de clé "Objet 1"
map<string, MaClasse>::iterator ci=MonMap.lower_bound("Objet 1");
cout << "Le premier Objet 1: " << ci->second << "\n";
//on pointe sur l’élément suivant
ci = MonMap.upper_bound("Objet 1");
cout << "Elément qui suit Objet 1: " << ci->second;
// On tente d’accéder à un élément qui n’existe pas
cout << "\nOn cherche un Objet 10 : ";
cout << MonMap["Objet 10"] << endl;
cout << "On efface Objet 3\n";
MonMap.erase("Objet 3");
AfficherMap(MonMap);
cout << "On efface tout\n";
MonMap.clear();
AfficherMap(MonMap);
}
//Définition de la fonction d’affichage du map
template<class T, class A>
void AfficherMap(const map<T, A>& m)
{
cout << "Voici les éléments du map :\n";
for (typename map<T, A>::const_iterator ci = m.begin(); ci != m.end(); ++ci)
cout << ci->first << "\t" << ci->second << "\n";
cout << "\n\n";
}
Voici les éléments du map : Objet 1 Chaîne: Objet 1 Valeur: 10 Objet 2 Chaîne: Objet 2 Valeur: 20 Objet 3 Chaîne: Objet 3 Valeur: 30 Voici les valeurs de objet1: Objet 1 10 Voici les nouvelles valeurs de objet2: Objet 2 bis 22 On ajoute au map : Chaîne: Objet 1 Valeur: 40 Voici les éléments du map : Objet 1 Chaîne: Objet 1 Valeur: 40 Objet 2 Chaîne: Objet 2 bis Valeur: 22 Objet 3 Chaîne: Objet 3 Valeur: 30 Voici le nombre d’objets 1 : 1 Le premier Objet 1: Chaîne: Objet 1 Valeur: 40 Elément qui suit Objet 1: Chaîne: Objet 2 bis Valeur: 22 On cherche un Objet 10 : Chaîne: Objet nouveau Valeur: 0 On efface Objet 3 Voici les éléments du map : Objet 1 Chaîne: Objet 1 Valeur: 40 Objet 10 Chaîne: Objet nouveau Valeur: 0 Objet 2 Chaîne: Objet 2 bis Valeur: 22 On efface tout Voici les éléments du map :
Vous n'aimez pas le lifting de Facebook ? Le site Mashable propose cinq étapes pour revenir à l'ancienne présentation du réseau social.