int main()
{
std::map<std::string, int, std::less<std::string> > age;
age["Fred"] = 42; // Fred is 42 years old
std::cout << "Fred is " << age["Fred"] << " years old\n";
}
Seulement,map n'associe que key à val et ne permet pas d'utiliser
plusieurs dimensions.
Y a t-il une fonction de librarie standard qui permette de faire du genre
age["Europe"]["France"]["Fred"] = 42;
par exemple ?
Sachant que le nombre de niveaux maximum n'est connu qu'à l'exécution.
En gros, ma_map["Fred"] est soit un nombre, soit un conteneur ; si c'est un conteneur, tu peux écrire ma_map["Fred"]["truc"] ; sinon, tu peux le convertir en un "Feuille&" (int dans ton cas).
NB : j'ai peu d'expérience dans ce type de structure, il doit être possible de faire plus élégant.
Après avoir un peu cherché, il y a apparemment boost::multi_array qui a
une méthode similaire.
Fabien LE LEZ wrote:
On Fri, 17 Oct 2003 14:56:13 +0200, Adrien Constant <null@none.com>
wrote:
Sachant que le nombre de niveaux maximum n'est connu qu'à l'exécution.
J'avais pas lu ça...
Bon, ben dans ce cas, la syntaxe que tu demandes me paraît difficile à
obtenir.
La solution qui me paraît la plus simple : un map<> avec comme clef
soit un vector<string>, soit une classe plus ou moins basée sur
vector<string>.
En gros, ma_map["Fred"] est soit un nombre, soit un conteneur ; si
c'est un conteneur, tu peux écrire ma_map["Fred"]["truc"] ; sinon, tu
peux le convertir en un "Feuille&" (int dans ton cas).
NB : j'ai peu d'expérience dans ce type de structure, il doit être
possible de faire plus élégant.
En gros, ma_map["Fred"] est soit un nombre, soit un conteneur ; si c'est un conteneur, tu peux écrire ma_map["Fred"]["truc"] ; sinon, tu peux le convertir en un "Feuille&" (int dans ton cas).
NB : j'ai peu d'expérience dans ce type de structure, il doit être possible de faire plus élégant.