Метод emplace_back
Метод emplace_back добавляет новый элемент в конец вектора.
В отличие от метода push_back, который сначала создает временный
объект, а затем копирует или перемещает его в вектор, emplace_back
конструирует объект непосредственно в памяти вектора. Это позволяет
избежать лишнего копирования и повысить производительность.
В параметры метода мы передаем аргументы, которые будут переданы конструктору класса элемента. Метод возвращает ссылку на добавленный элемент.
Синтаксис
vec.emplace_back(args...)
Пример
Давайте добавим несколько чисел в вектор, используя метод
emplace_back:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3};
vec.emplace_back(4);
vec.emplace_back(5);
for (int el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Пример
Давайте создадим вектор строк и добавим в него новую строку, передав аргументы непосредственно в метод:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> vec = {"a", "b", "c"};
vec.emplace_back("d");
vec.emplace_back(3, 'e');
for (const string& el : vec) {
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
"a b c d eee"