Emplace Back - добавление элемента в конец контейнера в C++
Emplace back - это метод контейнера, который позволяет добавить новый элемент в конец контейнера, конструируя его непосредственно на месте без создания временного объекта. Этот метод предоставляет более эффективный способ добавления элементов в контейнер, по сравнению с методом push_back, потому что он избегает копирования временного объекта.
Пример использования метода emplace_back с контейнером std::vector:
cpp
#include
#include
struct myStruct {
int x;
std::string str;
myStruct(int a, const std::string& s) : x(a), str(s) {}
};
int main() {
std::vector vec;
vec.emplace_back(1, "first");
vec.emplace_back(2, "second");
for (const auto& el : vec) {
std::cout << el.x << " " << el.str << std::endl;
}
return 0;
}
В данном примере мы создаем пользовательскую структуру myStruct с двумя полями: целочисленным x и строковым str. Затем мы создаем пустой вектор vec и с помощью метода emplace_back добавляем два элемента в конец вектора, конструируя объекты myStruct на месте.
При использовании метода emplace_back не требуется явно создавать временные объекты или использовать конструкторы копирования, что делает его более эффективным и уменьшает затраты на копирование элементов в контейнере.