Итак, я пытаюсь установить unordered_map как значение для другого unordered_map. Теперь у меня проблема в том, что я не могу поместить значения во второй unordered_map. Мой код выглядит следующим образом.
std::string postCode;
std::string[] postCodeSource = new std::string{1111,2222,3333,4444};
std::unordered_map<std::string,unordered_map<int,Foo*>*> data;
int k1=1234;//can be any number
for(int i = 0; i < 4; i++){
postCode = postCodeSource[i]
if(data[postCode]==NULL) {
data[postCode]=new std::unordered_map<int,Foo*>();
}
data[postCode]->at(int(k1)) = new Foo(postCodeSource[i]);
}
классы:
class Foo{
public:
Foo();
Foo(std::string postCode);
std::string firstName,Customername,postCode;
}
Foo(std::string postCode);
- это простой конструктор копирования.
Теперь, когда я достигаю data[lastPlz.getString()]->at(int(k1.customer)) = new Foo(&k1);
, я получаю исключение вне диапазона от unordered_map, которое имеет смысл, поскольку в k1.customer еще нет объектов! Прежде чем я изменил код, я создал и заполнил указатель, похожий на этот.
std::unordered_map<int,Foo*> kdnrMap
kdnrMap[k1.customer] = new Foo(&k1);
и позже, я добавил kdnrMap к data . Это больше не будет работать так, как я задумал, поскольку для этого метода потребуется полностью заполненный kdnrMap , прежде чем я смогу добавить его в data , что я больше не могу делать.
Итак, я ищу помощи, чтобы заполнить kdnrMap . Я попробовал почти все, что мог придумать.