Pouvez-vous s'il vous plaît dites-moi comment je peux écrire une carte multidimensionnelle. Pour une carte de deux dimensions, j'ai procédé à ce qui suit:
map<string, string, string, int> Employees; Employees[âperson1â]["gender"][âageâ] = 200;
5 Réponses :
Vous pouvez utiliser Par exemple, P> std :: paire code> comme vos clés à la place. key_part partialKey = std::pair<std::string, std::string>("person1","gender");
key myKey = std::pair<key_part, std::string>(partialKey, "age");
Employees[myKey] = 200;
cartes imbriquées? ou faire fonction comme
Carte
Findemplée (chaîne, chaîne, chaîne, int) code>
car il pourrait être plus facile d'appeler que de creuser la carte de troisième niveau. p>
Vous voulez normalement combiner les trois parties de la clé en une seule classe, avec un seul opérateur de comparaison. Vous pouvez utiliser quelque chose comme un paire class key_type {
std::string field1, field2, field3;
public:
bool operator<(key_type const &other) {
if (field1 < other.field1)
return true;
if (field1 > other.field1)
return false;
if (field2 < other.field2)
return true;
if (field2 > other.field2)
return false;
return field3 < other.field3;
}
};
map<string, map<string, map<string, int> > > employees; employees["person1"]["gender"]["age"] = 200;
J'aime cette approche:
Merci à tous de me montrer différentes manières avec des exemples.