Pointeur vers une carte
Si je définir un pointeur versmap
comme ceci:
map<int, string>* mappings;
mappings
est un pointeur. Comment dois-je utiliser ce pointeur pour faire fonctionner la carte?
BTW pour la validité de l'utilisation, de céder
mappings
avec un objet valide l'adresse ou new map<int,string>
.OriginalL'auteur | 2011-09-20
Vous devez vous connecter pour publier un commentaire.
Utiliser le pointeur tout comme vous utilisez tout autre indicateur: déréférencement d'elle pour arriver à l'objet vers lequel il pointe.
Rappelez-vous que
a->b
est — surtout — l'équivalent de(*a).b
, alors amusez-vous!(Bien que cette équivalence ne tient pas pour l'accès par index comme
(*a)[b]
, pour laquelle vous ne pouvez pas utiliser le->
syntaxe.)a->operator[](b)
, mais c'est un peu moche 😉Remarque: Ma réponse suppose que le pointeur de en fait, pointe vers une instance de
std::map<int, string>
; vous n'avez pas montrer pointeur d'initialisation dans votre question.Pourquoi "surtout équivalent" ?
a->b
n'est pas seulement un sucre syntaxique pour(*a).b
?Ce n'est pas nécessairement lorsque la surcharge de l'opérateur venir en elle.
C++11 vous permet de faire
mappings->at(0)
OriginalL'auteur
Pas beaucoup de différence, sauf que vous avez à utiliser
->
pour accéder à lamap
membres. c'est à direSi vous ne vous sentez pas à l'aise avec cela, alors vous pouvez affecter une référence et de l'utiliser que de manière naturelle:
Utilisation
myMap
que vous utilisez le plus souvent. c'est à direOriginalL'auteur
Par exemple:
OriginalL'auteur
une autre belle façon d'utiliser les pointeurs, ce qui me plaît, c'est l'appel de mappages->(et la fonction que vous voulez l'appeler)
J'ai pensé qu'il voulait dire le déréférencement par téléphone au (*mappings) pour obtenir la valeur, mais maintenant qu'il a ajouté le code je vois qu'il couvre à la fois les bases 🙂
Ah, je ne pensais pas voir sa pré-5-min edit 🙂
OriginalL'auteur
Bien, STL est conçu pour réduire la complexité du pointeur de la manipulation..donc meilleure approche est d'utiliser la stl::iterator.. essayez d'éviter les pointeurs :-/
stl::iterator
et, même s'il existait, il ne pourrait pas fonctionner comme un pointeur de carte.OriginalL'auteur