код ?
                  
                  
                  Я подумывал с помощью рекурсии но как ?
                  
                  
                  #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 можно применять, а так что тут ещё то оптимизировать...
Обсуждают сегодня