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