26 Containers library [containers]

26.3 Sequence containers [sequences]

26.3.9 Class template forward_­list [forwardlist]

26.3.9.5 forward_­list modifiers [forwardlist.modifiers]

Ни одна из перегрузок insert_­after не должна влиять на действительность итераторов и ссылок, и erase_­after должна делать недействительными только итераторы и ссылки на стертые элементы. Если во время сгенерировано исключение insert_­after , никакого эффекта не будет. Вставка n элементов в a forward_­list линейна по n, а количество вызовов конструктора копирования или перемещения T точно равно n. Стирание n элементов из a forward_­list линейно по, n и количество вызовов деструктора типа T точно равно n.

template <class... Args> reference emplace_front(Args&&... args);

Effects: Вставляет объект типа, созданного value_­type с помощью, value_­type(std​::​forward<Args>(​args)...) в начало списка.

void push_front(const T& x); void push_front(T&& x);

Effects: Вставляет копию x в начало списка.

void pop_front();

Effects: Как будто мимо erase_­after(before_­begin()).

iterator insert_after(const_iterator position, const T& x); iterator insert_after(const_iterator position, T&& x);

Requires: position является before_­begin() или является разыменяемым итератором в диапазоне [begin(), end()).

Effects: Вставляет копию x после position.

Returns: Итератор, указывающий на копию x.

iterator insert_after(const_iterator position, size_type n, const T& x);

Requires: position является before_­begin() или является разыменяемым итератором в диапазоне [begin(), end()).

Effects: Вставляет n копии x после position.

Returns: Итератор, указывающий на последнюю вставленную копию x или position if n == 0.

template <class InputIterator> iterator insert_after(const_iterator position, InputIterator first, InputIterator last);

Requires: position является before_­begin() или является разыменяемым итератором в диапазоне [begin(), end()). first и last не являются итераторами в *this.

Effects: Вставляет копии элементов в [first, last) after position.

Returns: Итератор, указывающий на последний вставленный элемент или position if first == last.

iterator insert_after(const_iterator position, initializer_list<T> il);

Effects: insert_­after(p, il.begin(), il.end()).

Returns: Итератор, указывающий на последний вставленный элемент или position если il он пуст.

template <class... Args> iterator emplace_after(const_iterator position, Args&&... args);

Requires: position является before_­begin() или является разыменяемым итератором в диапазоне [begin(), end()).

Effects: Вставляет объект типа, созданного value_­type с помощью value_­type(std​::​forward<Args>(​args)...) after position.

Returns: Итератор, указывающий на новый объект.

iterator erase_after(const_iterator position);

Requires: Следующий итератор position можно разыменовать.

Effects: Удаляет элемент, на который указывает следующий итератор position.

Returns: Итератор, указывающий на элемент, следующий за тем, который был удален, или end() если такой элемент не существует.

Throws: Ничего такого.

iterator erase_after(const_iterator position, const_iterator last);

Requires: Все итераторы в диапазоне (position, last) можно разыменовать.

Effects: Стирает элементы в диапазоне (position, last).

Returns: last.

Throws: Ничего такого.

void resize(size_type sz);

Effects: Если sz < distance(begin(), end()), стирает последние distance(begin(), end()) - sz элементы из списка. В противном случае sz - distance(begin(), end()) вставляет элементы, вставленные по умолчанию, в конец списка.

Requires: T должен быть DefaultInsertable в *this.

void resize(size_type sz, const value_type& c);

Effects: Если sz < distance(begin(), end()), стирает последние distance(begin(), end()) - sz элементы из списка. В противном случае вставляет sz - distance(begin(), end()) копии c в конец списка.

Requires: T должен быть CopyInsertable в *this.

void clear() noexcept;

Effects: Удаляет все элементы в диапазоне [begin(), end()).

Remarks: Не делает недействительными итераторы, прошедшие мимо конца.