При использовании std::vector
s, std::list
(или других STL-контейнеров) я часто пишу это, для краткости кода (а не для ввода явного vec[index]
каждый раз) и эффективности распределения памяти (избегая копирования/переместить), и я полагаю, что я не единственный, кто может это сделать:
std::vector<A> vec;
vec.emplace_back();
A &element = vec[vec.size()-1];
element.prop = "value";
Почему методы STL-контейнеров emplace
, emplace_back
и emplace_front
не возвращают T&
?. Это позволит просто написать это, а не использовать теневой vec.size()-1
:
std::vector<A> vec;
A &element = vec.emplace_back();
element.prop = "value";