Je suis en train de vérifier si la valeur est dans une carte et un peu ne peut pas le faire :
alors, comment je peux imprimer ce qui est dans p ?
Je suis en train de vérifier si la valeur est dans une carte et un peu ne peut pas le faire :
alors, comment je peux imprimer ce qui est dans p ?
Pour vérifier si une touche particulière dans la carte existe, utilisez l' count
fonction membre de l'une des manières suivantes:
m.count(key) > 0
m.count(key) == 1
m.count(key) != 0
La documentation pour l' map::find
dit: "une Autre fonction membre, map::count
, peut être utilisé pour simplement vérifier si une clé existe."
La documentation pour l' map::count
dit: "Parce que tous les éléments d'une carte conteneur sont uniques, la fonction ne peut retourner 1 (si l'élément est trouvé) ou zéro (dans le cas contraire)."
Pour récupérer une valeur à partir de la carte par l'intermédiaire d'une clé que vous savez d'exister, l'utilisation de la carte:::
value = m.at(key)
Contrairement à la carte::operator[], map::at
ne va pas créer une nouvelle clé dans la carte si la clé spécifiée n'existe pas.
Je pense que vous souhaitez map::find
. Si m.find("f")
est égal à m.end()
, alors la clé n'a pas été trouvé. Sinon, trouvez retourne un itérateur pointant sur l'élément trouvé.
L'erreur est parce qu' p.first
est un itérateur, qui n'a pas de travail pour le volet insertion. Changer votre dernière ligne de cout << (p.first)->first;
. p
est une paire d'itérateurs, p.first
est un itérateur, p.first->first
est la clé de la chaîne.
Une carte ne peut jamais avoir qu'un élément pour une clé donnée, de sorte equal_range
n'est pas très utile. Il est défini pour la carte, parce qu'elle est définie pour tous les conteneurs associatifs, mais c'est beaucoup plus intéressant pour multimap.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.