временных обектов:
vector <string> foo;
foo.emplace("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
т.е. не будет создаваться объекта (ссылка?) в динамической памяти, а мы как-бы сразу создадим обекът на месте, что выгодно? Вот я видимо буксую, при понимании того, как там в памяти все это происходит
Push используется для объектов которые по типу совпадают с элементами контейнера. Например, std::vector<MyClass> vec; MyClass mc; vec.push_back(std::move(mc)); А emplace для объектов которые могут создать класс находящийся в контейнере, но им не являются. Например, std::vector<MyClass> vec; vec.emplace_back(); //вызываем ctor MyClass() vec.emplace_back(10, 10); //вызываем ctor MyClass(int, int)
push_back для готового продукта, emplace для готового и для ингредиентов из которых можно приготовить готовый 😁
Обсуждают сегодня