Я хочу структуру, которая имеет unordered_map
в качестве члена.
Я также не хочу набирать тип все время, поэтому я typedef
.C++ - добавление hashmap к структуре
typedef std::unordered_map<std::string, int> HM;
struct A {
HM myHm;
}
A *myA = new A();
HM hashmap = new HM(); // empty hashmap
hashmap["1"] = 1;
myA->myHm = hashmap;
Конечно, это неверно.
Я вижу примеры людей делают std::unordered_map<std::string, int> HM;
, а затем сразу HM["1"] = 1;
Прежде всего, я привык к Java, где std::unordered_map<std::string, int> HM;
просто тип, и если я хочу, чтобы добавить материал к нему, мне нужно для его создания с помощью ()
.
Кажется, что в C++ он создается в момент, когда я пишу std::unordered_map<std::string, int> HM;
. Может ли кто-нибудь рассказать об этом?
Во-вторых, каков правильный способ делать то, что я хочу?
Этот код компилирует и делает то, что вы ожидаете (ну, если вы поместите код внутри функции, которая будет). –
'A mA; HM hashmap; 'достаточны и предпочтительны в C++ для создания полнофункциональных объектов. Нет 'new' означает отсутствие утечек памяти (обычно). Также вы создаете хэш-карту как локальную переменную, а затем копируете ее в хэш-карту в своей структуре. Почему бы просто не использовать это прямо? –
@JamesPicone Я получаю 'преобразование из 'HM *' в нескалярный тип 'HM' request', когда я назначаю' HM() '' HM hashmap'. – pushkin