код ?
Я подумывал с помощью рекурсии но как ?
#include <iostream>
#include <map>
using namespace std;
typedef map <int, map <int, map <int, map <int, int>>>> int_multimap;
struct Data {
int country, city, home, student, info;
};
int main() {
int_multimap data;
Data d = {1, 2, 4, 5, 6};
data.insert({1, {{2, {{3, {{4, 5}}}}}}});
// vvv
if (data.find(d.country) == data.end())
data.insert({ d.country, {{d.city, {{d.home, {{d.student, d.info}}}}}} });
else {
auto& i = data[d.country];
if (i.find(d.city) == i.end())
i.insert({ d.city, {{d.home, {{d.student, d.info}}}} });
else {
auto& j = i[d.city];
if (j.find(d.home) == j.end())
j.insert({ d.home, {{d.student, d.info}} });
else {
auto& q = j[d.home];
if (q.find(d.student) == q.end())
q.insert({ d.student, d.info });
}
}
}
// ^^^ - как оптимизировать ?
cout << data[1][2][3][4];
cout << data[1][2][4][5];
return 0;
}
Я бы сделал отдельный класс-обертку над твоей мультимапой с нужными функциями
Ну emplace можно применять, а так что тут ещё то оптимизировать...
Обсуждают сегодня