Namespaces
Variants

std::forward_list<T,Allocator>:: insert_after

From cppreference.net
iterator insert_after ( const_iterator pos, const T & value ) ;
(1) (начиная с C++11)
(constexpr начиная с C++26)
iterator insert_after ( const_iterator pos, T && value ) ;
(2) (начиная с C++11)
(constexpr начиная с C++26)
iterator insert_after ( const_iterator pos,
size_type count, const T & value ) ;
(3) (начиная с C++11)
(constexpr начиная с C++26)
template < class InputIt >

iterator insert_after ( const_iterator pos,

InputIt first, InputIt last ) ;
(4) (начиная с C++11)
(constexpr начиная с C++26)
iterator insert_after ( const_iterator pos,
std:: initializer_list < T > ilist ) ;
(5) (начиная с C++11)
(constexpr начиная с C++26)

Вставляет элементы после указанной позиции в контейнере. Если pos является before_begin() , первый вставленный элемент (если существует) станет первым элементом * this .

Если pos находится вне диапазона [ before_begin() , end() ) , поведение не определено.

1,2) Вставляет копию value после pos .
1) Если T не является CopyInsertable в forward_list , поведение не определено.
2) Если T не является MoveInsertable для forward_list , поведение не определено.
3) Вставляет count копий значения value после позиции pos .
Если T не является CopyInsertable в forward_list , поведение не определено.
4) Вставляет элементы из диапазона [ first , last ) после pos .
Эта перегрузка участвует в разрешении перегрузки только если InputIt удовлетворяет требованиям LegacyInputIterator .
Если выполняется любое из следующих условий, поведение не определено:
  • T не является EmplaceConstructible в forward_list из * first .
  • first или last является итератором на * this .
5) Вставляет элементы из списка инициализации ilist после pos .
Эквивалентно return insert_after ( position, ilist. begin ( ) , ilist. end ( ) ) ; .

Никакие итераторы или ссылки не инвалидируются.

Содержание

Параметры

pos - итератор, после которого будет вставлено содержимое
value - значение элемента для вставки
count - количество копий для вставки
first, last - пара итераторов, определяющая исходный диапазон элементов для вставки
ilist - список инициализации для вставки значений

Возвращаемое значение

1,2) Итератор на вставленный элемент.
3) Итератор на последний вставленный элемент, или pos если count == 0 является true .
4) Итератор на последний вставленный элемент, или pos если first == last равно true .
5) Итератор на последний вставленный элемент, или pos если ilist пуст.

Исключения

Если исключение выбрасывается по любой причине, эти функции не оказывают никакого эффекта ( strong exception safety guarantee ).

Сложность

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)