Шаг 154.
Библиотека STL.
Контейнеры STL. Операции над списками. Функции врезки

    На этом шаге мы рассмотрим функции, осуществляющие вставку элементов.

    Как отмечалось на предыдущих шагах, одним из достоинств связанных списков является возможность удаления и вставки элементов в произвольной позиции с постоянным временем. При перемещении элементов из одного контейнера в другой это достоинство проявляется еще сильнее, потому что операция выполняется переназначением нескольких внутренних указателей (рисунок 1).


Рис.1. Операции врезки изменяют порядок следования элементов списка

    Для обеспечения этой возможности спискам необходимы дополнительные модифицирующие функции, которые бы изменяли порядок следования и производили повторное связывание ссылок на элементы и интервалы. При помощи этих функций можно перемещать элементы как внутри одного списка, так и между разными списками (при условии, что эти списки имеют одинаковый тип). Перечень таких функций приводится в таблице 1, а пример - на шаге 156.

Таблица 1. Специальные операции модификации списков
Операция Описание
c.unique() Удаляет дубликаты (элементы с одинаковыми значениями)
c.unique(op) Удаляет дубликаты (элементы с одинаковыми значениями), для которых ор возвращает true
c1.splice(pos,c2) Перемещает все элементы с2 в c1 перед позицией итератора pos
c1.splice(pos,c2,c2pos) Перемещает все элементы с2, начиная с позиции итератора c2pos, в список c1 перед позицией итератора pos
c1.splice(pos,c2,c2beg,c2end) Перемещает все элементы интервала [c2beg,c2end) списка с2 перед позицией итератора pos в список с1 (с1 и с2 могут совпадать)
c.sort() Сортирует все элементы оператором <
c.sort(op) Сортирует все элементы по критерию ор
с1.merge(c2) Перемещает все элементы с2 в c1 с сохранением сортировки (предполагается, что оба контейнера содержат отсортированные элементы)
c1.merge(c2,op) Перемещает все элементы c2 в c1 с сохранением сортировки по ор() (предполагается, что оба контейнера содержат элементы, отсортированные по критерию ор())
c.reverse() Переставляет все элементы в обратном порядке

    На следующем шаге мы рассмотрим обработку исключений.




Предыдущий шаг Содержание Следующий шаг