2009-08-06 20 views

Respuesta

57

Usted puede hacer esto:

(*myFruit)["apple"] = 1; 

o

myFruit->operator[]("apple") = 1; 

o

map<string, int> &tFruit = *myFruit; 
tFruit["apple"] = 1; 
+0

No se olvide de asignar el objeto del mapa con nuevo primero. – Matt

+0

Mis respuestas asumen que 'myFruit' es un puntero ya existente para un' map 'en algún lugar, que puede o no haber sido asignado en el montón. –

+3

Dependiendo de si desea esa semántica adicional, C++ 11 ofrece una función marcada en() que puede usar como 'ptr-> at (" apple ")' – PlasmaHH

5

myFruit es un puntero a un mapa. Si quita el asterisco, tendrá un mapa y su sintaxis siguiente funcionará.

Alternativamente, se puede utilizar el operador de desreferencia (*) para acceder al mapa con el puntero, pero que tendrá que crear su primer mapa:

map<string, int>* myFruit = new map<string, int>() ; 
+0

Esto no encuentra un poco el punto. Él ya sabe que no puede acceder a los elementos, pero tiene un puntero, y ya está asignado. – GManNickG

+0

He vuelto a leer la pregunta y no veo una mención de que el mapa ya está asignado, ¿o me perdí esto? – swongu

2
map<string, int> *myFruit; 
(*myFruit)["apple"] = 1; 
(*myFruit)["pear"] = 2; 

funcionaría si es necesario mantenerlo como un puntero.

Cuestiones relacionadas