std::map, pointeur de carte de la valeur de la clé, est-ce possible?

std::map<std::string, std::string> myMap;

std::map<std::string, std::string>::iterator i = m_myMap.find(some_key_string);
if(i == m_imagesMap.end())
    return NULL;

string *p = &i->first;

Est la dernière ligne est-elle valide?
Je veux stocker ce pointeur p d'ailleurs, il sera valable pour l'ensemble du programme de la vie?
Mais ce qui va arriver si j'ai ajouter un peu plus d'éléments de la carte (avec d'autres touches) ou de supprimer certaines autres touches, n'est-ce pas réaffecter cette chaîne (paire clé-valeur), de sorte que la p ne sera pas valide?

  • réponse courte: probablement PAS, réponse longue: il ne se compile pas, sauf si vous avez déjà utilisé typedef const std::string string; au lieu de using namespace std; qui est assez déroutant...
InformationsquelleAutor michael | 2009-02-05