void splice_after(const_iterator position, forward_list& x);
void splice_after(const_iterator position, forward_list&& x);
Requires:position являетсяbefore_begin() или является разыменяемым итератором в диапазоне[begin(), end()). get_allocator() == x.get_allocator(). &x != this.
Effects: Вставляет содержимоеx после positionиx становится пустым. Указатели и ссылки на перемещенные элементыx теперь относятся к тем же элементам, но как к членам*this. Итераторы, относящиеся к перемещенным элементам, будут продолжать ссылаться на свои элементы, но теперь они ведут себя как итераторы в*this, а не вx.
void splice_after(const_iterator position, forward_list& x, const_iterator i);
void splice_after(const_iterator position, forward_list&& x, const_iterator i);
Requires:position являетсяbefore_begin() или является разыменяемым итератором в диапазоне[begin(), end()). Следующий итераторi - это итератор с возможностью разыменования вx. get_allocator() == x.get_allocator().
Effects: Вставки элемент следующиеi в*thisпосле position, и удаляет его изx. Результат не меняется, еслиposition == i илиposition == ++i. Указатели и ссылки, чтобы*++i продолжать ссылаться на тот же элемент, но как на член *this. Итераторы*++i продолжают ссылаться на тот же элемент, но теперь ведут себя как итераторы в*this, а не вx.
void splice_after(const_iterator position, forward_list& x,
const_iterator first, const_iterator last);
void splice_after(const_iterator position, forward_list&& x,
const_iterator first, const_iterator last);
Requires:position являетсяbefore_begin() или является разыменяемым итератором в диапазоне[begin(), end()).(first, last) - допустимый диапазон вx, и все итераторы в этом диапазоне(first, last) можно разыменовать.position не является итератором в диапазоне(first, last). get_allocator() == x.get_allocator().
Effects: Вставляет элементы в диапазон(first, last) послеposition и удаляет элементы изx. Указатели и ссылки на перемещенные элементы x теперь относятся к тем же элементам, но как к членам*this. Итераторы, относящиеся к перемещенным элементам, будут продолжать ссылаться на свои элементы, но теперь они ведут себя как итераторы в*this, а не вx.
void remove(const T& value);
template <class Predicate> void remove_if(Predicate pred);
Effects: Удаляет все элементы в списке, на которые ссылается итератор списка,i для которых выполняются следующие условия:*i == value (forremove()), pred(*i) istrue (forremove_if()). Делает недействительными только итераторы и ссылки на удаленные элементы.
void unique();
template <class BinaryPredicate> void unique(BinaryPredicate pred);
Effects: Удаляет все элементы, кроме первого, из каждой последовательной группы равных элементов, на которую ссылается итераторi в диапазоне,[first + 1, last) для которого*i == *(i-1) (для версии без аргументов) илиpred(*i, *(i - 1)) (для версии с аргументом предиката) выполняется. Делает недействительными только итераторы и ссылки на удаленные элементы.
Complexity: Если диапазон[first, last) не пуст, то это точно(last - first) - 1 применения соответствующего предиката, в противном случае - никакие применения предиката.
void merge(forward_list& x);
void merge(forward_list&& x);
template <class Compare> void merge(forward_list& x, Compare comp);
template <class Compare> void merge(forward_list&& x, Compare comp);
Requires:comp определяетstrict weak orderingи*this иx оба сортируются в соответствии с этим порядком. get_allocator() == x.get_allocator().
Effects: Объединяет два отсортированных диапазона[begin(), end()) и [x.begin(), x.end()).x после слияния пусто. Если исключение выбрасывается иначе, чем путем сравнения, нет никаких эффектов. Указатели и ссылки на перемещенные элементыx теперь относятся к тем же элементам, но как к членам*this. Итераторы, относящиеся к перемещенным элементам, будут продолжать ссылаться на свои элементы, но теперь они ведут себя как итераторы в*this, а не в x.
void sort();
template <class Compare> void sort(Compare comp);
Requires:operator< (для версии без аргументов) илиcomp (для версии с аргументом сравнения) определяетstrict weak ordering.
Effects: Сортирует список по объекту функцииoperator< илиcomp . Если выбрасывается исключение, порядок элементов в нем*this не указан. Не влияет на валидность итераторов и ссылок.
void reverse() noexcept;
Effects: Меняет порядок элементов в списке на обратный. Не влияет на валидность итераторов и ссылок.