C ++ - Ссылка на карту доступа - PullRequest
0 голосов
/ 24 октября 2011

Извините. тривиальный вопрос о доступе к справочной карте

если у меня есть:

map<int,string> *items= new map<int,string>();

Я так делаю?

string x = &items[100];

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Итак, сначала я спрашиваю; почему вы динамически размещаете свою карту? Это своего рода побеждает цель использования его в первую очередь. Карта будет внутренне использовать динамическое распределение для своих элементов, но сама карта дешева, и вы теряете возможность детерминистически управлять ее памятью через область видимости. Итак, ваш код становится:

map<int,string> my_map;
my_map[100] = "some string";
string x = items[100];

В противном случае вам нужно сначала разыменовать указатель карты.

string x = (*my_map)[100];

Правда ... не делай этого.

1 голос
/ 24 октября 2011

Если вам необходимо:

map<int,string> *items= new map<int,string>();

Вы делаете это:

string x = (*items)[100];

Если бы вы могли вместо этого:

map<int,string> items;

Вы бы сделали это:

string x = items[100];
...