C++ carte avec une struct
Donc, j'ai obtenu ceci:
struct People_Info {
bool isWorking;
std::string name;
int age;
float height;
};
int counter = 0;
int random = urand(1, 4);
std::map<uin64, People_Info> PeopleMap;
Maintenant, une fonction sera appelée qui permettra de créer une entrée dans la carte avec cette structure qui permettra de définir certaines valeurs par défaut:
PeopleMap[counter].isWorking = false;
PeopleMap[counter].name = "Mr";
PeopleMap[counter].age = 1;
PeopleMap[counter].height = 1.60f;
counter++;
Maintenant, c'est la fonction que doit faire une entrée pour quelqu'un de nouveau, mais, tout au long du script, je vais supprimer certaines entrées, donc si j'ai obtenu 5 éléments, et j'ai supprimer par exemple la deuxième, puis, je veux modifier certaines variables de tout le monde dans la carte:
for(int i = 0; i < 5 ; i++) {
if(PeopleMap[i] == PeopleMap.end()) //Don't edit map entries that are erased
continue;
PeopleMap[i].isWorking = true;
}
Maintenant, pour une raison quelconque, il est encore l'édition de toutes les entrées, dois-je l'utiliser pour faire une structure pour chaque entrée?
Est
if(PeopleMap[i] == PeopleMap.end())
partie de votre code? Parce que ce n'est pas compilé.OriginalL'auteur Sombrero Chicken | 2012-12-02
Vous devez vous connecter pour publier un commentaire.
PeopleMap.end()
ne retourne pas un argument valable, c'est comme un fantôme nœud.Par exemple, un moyen pour parcourir la carte pourrait être:
Voir,
PeobleMap
est comme un fantôme nœud à la fin indique que vous avez atteint la fin.Dans le précédent
for
, si vous souhaitez accéder à la carte des valeurs que vous pouvez faire:Donc, si vous utiliser des itérateurs vous n'avez pas à vérifier les valeurs radiées et vous serait en mesure de modifier un paramètre dans chaque paire dans la carte (moins les principaux)
OriginalL'auteur dmayola
Lors de l'utilisation de l'indice de l'opérateur pour accéder à une clé dans la carte qui n'existe pas, pourtant, un élément correspondant est inséré. Il est indifférent que l'objet a été effacé avant: il va toujours être inséré si elle n'existe pas.
Pour accéder à tous les éléments d'une carte que vous n'utilisez pas les touches, mais plutôt que vous 'd utiliser des itérateurs sur la carte. De cette façon, pas de nouveaux éléments sont insérés.
OriginalL'auteur Dietmar Kühl
Le suivant est incorrect:
Vous avez probablement voulu dire
OriginalL'auteur NPE