Метод insert
Метод insert класса list вставляет один или несколько элементов в список перед позицией, на которую указывает итератор. Первым параметром метод принимает итератор позиции, перед которой нужно вставить элемент, а вторым - значение, количество или диапазон вставляемых элементов. Метод возвращает итератор, указывающий на первый из вставленных элементов.
Синтаксис
iterator insert(iterator pos, const T& value);
iterator insert(iterator pos, T&& value);
iterator insert(iterator pos, size_type count, const T& value);
template <class InputIt>
iterator insert(iterator pos, InputIt first, InputIt last);
iterator insert(iterator pos, initializer_list<T> ilist);
Первый параметр pos - итератор, перед которым выполняется вставка. Второй параметр зависит от перегрузки: это может быть значение, количество элементов, диапазон или список инициализации.
Пример
Давайте вставим один элемент в список перед вторым элементом:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
auto it = lst.begin();
++it;
lst.insert(it, 10);
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
1 10 2 3 4 5
Пример
Давайте вставим 3 одинаковых элемента перед первым элементом списка:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
lst.insert(lst.begin(), 3, 0);
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
0 0 0 1 2 3 4 5
Пример
Давайте вставим диапазон элементов из одного списка в другой перед последним элементом:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
list<int> other = {10, 20, 30};
auto it = lst.end();
--it;
lst.insert(it, other.begin(), other.end());
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
1 2 3 4 10 20 30 5
Пример
Давайте вставим элементы из списка инициализации в начало списка:
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> lst = {1, 2, 3, 4, 5};
lst.insert(lst.begin(), {7, 8, 9});
for (int elem : lst)
{
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
7 8 9 1 2 3 4 5
Смотрите также
-
класс
list,
который представляет двусвязный список -
метод
push_back,
который добавляет элемент в конец списка -
метод
push_front,
который добавляет элемент в начало списка -
метод
erase,
который удаляет элементы из списка