std::forward_list<T,Allocator>::insert_after
iterator insert_after( const_iterator pos, const T& value ); | (1) | (since C++11) |
iterator insert_after( const_iterator pos, T&& value ); | (2) | (since C++11) |
iterator insert_after( const_iterator pos, size_type count, const T& value ); | (3) | (since C++11) |
template< class InputIt > iterator insert_after( const_iterator pos, InputIt first, InputIt last ); | (4) | (since C++11) |
iterator insert_after( const_iterator pos, std::initializer_list<T> ilist ); | (5) | (since C++11) |
Вставляет элементы после указанной позиции в контейнер.
1,2) Вставляет
value после элемента, на который указывает pos.
3) Вставляет
count копий value после элемента, на который указывает pos.
4) Вставляет элементы из диапазона
[first, last) после элемента, на который указывает pos. Поведение не определено, если first и last являются итераторами в *this.
5) Вставляет элементы из списка инициализации
ilist.Никакие итераторы или ссылки не становятся недействительными.
Параметры
| pos | - | итератор после которого будет вставлено содержимое |
| value | - | значение вставляемого элемента |
| count | - | количество копий для вставки |
| first, last | - | диапазон вставляемых элементов |
| ilist | - | список инициализации, значения из которого необходимо вставить |
| Требования к типу | ||
-InputIt должно соответствовать требованиям LegacyInputIterator. |
||
Возвращаемое значение
1,2) Итератор на вставленный элемент.
3) Итератор на последний вставленный элемент, или
pos если count == 0.
4) Итератор на последний вставленный элемент, или
pos если first == last.
5) Итератор на последний вставленный элемент, или
pos если ilist пуст.Исключения
Если происходит сброс исключения по какой-либо причине, эти функции не имеют эффекта (гарантия устойчивости к исключениям).
Сложность
1,2) Постоянная.
3) Линейная по
count.
4) Линейная по
std::distance(first, last).
5) Линейная по
ilist.size().Пример
#include <forward_list>
#include <iostream>
#include <string>
#include <vector>
void print(const std::forward_list<int>& list)
{
std::cout << "list: {";
for (char comma[3] = {'\0', ' ', '\0'}; int i : list)
{
std::cout << comma << i;
comma[0] = ',';
}
std::cout << "}\n";
}
int main()
{
std::forward_list<int> ints{1, 2, 3, 4, 5};
print(ints);
// insert_after (2)
auto beginIt = ints.begin();
ints.insert_after(beginIt, -6);
print(ints);
// insert_after (3)
auto anotherIt = beginIt;
++anotherIt;
anotherIt = ints.insert_after(anotherIt, 2, -7);
print(ints);
// insert_after (4)
const std::vector<int> v = {-8, -9, -10};
anotherIt = ints.insert_after(anotherIt, v.cbegin(), v.cend());
print(ints);
// insert_after (5)
ints.insert_after(anotherIt, {-11, -12, -13, -14});
print(ints);
}Вывод:
list: {1, 2, 3, 4, 5}
list: {1, -6, 2, 3, 4, 5}
list: {1, -6, -7, -7, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, -11, -12, -13, -14, 2, 3, 4, 5}См. также
| создает элементы на месте после элемента (public member function) |
|
| вставляет элемент в начало (public member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/forward_list/insert_after