None of the overloads of
insert_after shall affect the validity of iterators and
references, and
erase_after shall invalidate only iterators and references to
the erased elements
. If an exception is thrown during
insert_after there shall
be no effect
. Inserting
n elements into a
forward_list is linear in
n, and the number of calls to the copy or move constructor of
T is
exactly equal to
n. Erasing
n elements from a
forward_list is
linear in
n and the number of calls to the destructor of type
T is
exactly equal to
n. template <class... Args> reference emplace_front(Args&&... args);
Effects: Inserts an object of type
value_type constructed with
value_type(std::forward<Args>(args)...) at the beginning of the list
. void push_front(const T& x);
void push_front(T&& x);
Effects: Inserts a copy of
x at the beginning of the list
. void pop_front();
Effects: As if by
erase_after(before_begin()). iterator insert_after(const_iterator position, const T& x);
iterator insert_after(const_iterator position, T&& x);
Requires: position is
before_begin() or is a dereferenceable
iterator in the range
[begin(), end()). Effects: Inserts a copy of
x after
position. Returns: An iterator pointing to the copy of
x. iterator insert_after(const_iterator position, size_type n, const T& x);
Requires: position is
before_begin() or is a dereferenceable
iterator in the range
[begin(), end()). Effects: Inserts
n copies of
x after
position. Returns:
An iterator pointing to the last inserted copy of
x or
position if
n == 0. template <class InputIterator>
iterator insert_after(const_iterator position, InputIterator first, InputIterator last);
Requires: position is
before_begin() or is a dereferenceable
iterator in the range
[begin(), end()). first and
last are not iterators in
*this. Effects: Inserts copies of elements in
[first, last) after
position. Returns:
An iterator pointing to the last inserted element or
position if
first == last. iterator insert_after(const_iterator position, initializer_list<T> il);
Effects: insert_after(p, il.begin(), il.end()). Returns:
An iterator pointing to the last inserted element or
position if
il is empty
. template <class... Args>
iterator emplace_after(const_iterator position, Args&&... args);
Requires: position is
before_begin() or is a dereferenceable
iterator in the range
[begin(), end()). Effects: Inserts an object of type
value_type constructed with
value_type(std::forward<Args>(args)...) after
position. Returns: An iterator pointing to the new object
. iterator erase_after(const_iterator position);
Requires: The iterator following
position is dereferenceable
. Effects: Erases the element pointed to by the iterator following
position. Returns: An iterator pointing to the element following the one that was
erased, or
end() if no such element exists
. iterator erase_after(const_iterator position, const_iterator last);
Requires: All iterators in the range
(position, last) are dereferenceable
. Effects: Erases the elements in the range
(position, last). void resize(size_type sz);
Effects: If
sz < distance(begin(), end()), erases the last
distance(begin(),
end()) - sz elements from the list
. Otherwise, inserts
sz - distance(begin(), end()) default-inserted
elements at the end of the list
.Requires: T shall be
DefaultInsertable into
*this. void resize(size_type sz, const value_type& c);
Effects: If
sz < distance(begin(), end()), erases the last
distance(begin(),
end()) - sz elements from the list
. Otherwise, inserts
sz - distance(begin(), end())
copies of
c at the end of the list
.Requires: T shall be
CopyInsertable into
*this. void clear() noexcept;
Effects: Erases all elements in the range
[begin(), end()). Remarks: Does not invalidate past-the-end iterators
.