У меня есть следующее:
struct A { std::map<int, B> b; }
struct B { std::map<int, C> c; };
std::map<int, A> a;
И я хотел бы заполнить a
значениями внутри цикла for:
for(int i : ...)
for(int j : ...)
for(int k : ...)
a[i].b[j].c.emplace(k, <args to constructor of C>);
Это неэффективно? Будут ли построены объекты A и B в вызовах a[i]
и b[j]
на месте? Зависит ли ответ от того, как часто a[i]
и b[j]
приводят к вставке против присвоения? Можно ли это сделать менее многословно, используя try_emplace
?