Namespaces
Variants

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

From cppreference.net
iterator erase_after ( const_iterator pos ) ;
(1) (начиная с C++11)
(constexpr начиная с C++26)
iterator erase_after ( const_iterator first, const_iterator last ) ;
(2) (начиная с C++11)
(constexpr начиная с C++26)

Удаляет указанные элементы из контейнера.

1) Удаляет элемент, следующий за pos .
Если итератор, следующий за pos не может быть разыменован, поведение не определено.
2) Удаляет элементы в диапазоне ( first , last ) .
Если любой итератор в диапазоне ( first , last ) не является разыменовываемым, поведение не определено.

Содержание

Параметры

pos - итератор на элемент, предшествующий удаляемому элементу
first, last - пара итераторов, определяющих диапазон удаляемых элементов

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

1) Итератор на элемент, следующий за удалённым, или end() если такого элемента не существует.
2) last

Сложность

1) Константа.
2) Линейно по расстоянию между first и last .

Исключения

Ничего не выбрасывает.

Пример

#include <forward_list>
#include <iostream>
#include <iterator>
int main()
{
    std::forward_list<int> l = {1, 2, 3, 4, 5, 6, 7, 8, 9};
//  l.erase(l.begin()); // Ошибка: нет функции erase()
    l.erase_after(l.before_begin()); // Удаляет первый элемент
    for (auto n : l)
        std::cout << n << ' ';
    std::cout << '\n';
    auto fi = std::next(l.begin());
    auto la = std::next(fi, 3);
    l.erase_after(fi, la);
    for (auto n : l)
        std::cout << n << ' ';
    std::cout << '\n';
}

Вывод:

2 3 4 5 6 7 8 9
2 3 6 7 8 9

Смотрите также

очищает содержимое
(публичная функция-член)