Последовательности (Sequences)
Последовательности (Sequences)
Последовательность - это вид контейнера, который организует конечное множество объектов одного и того же типа в строгом линейном порядке. Библиотека обеспечивает три основных вида последовательных контейнеров: vector (вектор), list (список) и deque (двусторонняя очередь). Она также предоставляет контейнерные адаптеры, которые облегчают создание абстрактных типов данных, таких как стеки или очереди, из основных видов последовательностей (или из других видов последовательностей, которые пользователь может сам определить).
В следующих двух таблицах X - последовательный класс, a - значение X, i и j удовлетворяют требованиям итераторов ввода, [i, j) - допустимый диапазон, n - значение X::size_type, p - допустимый итератор для a, q - разыменовываемый итератор для a, [q1, q2) - допустимый диапазон в a, t - значение X::value_type.
Сложности выражений зависят от последовательностей.
Таблица 10. Требования последовательностей (в дополнение к контейнерам)
выражение возвращаемый тип утверждение/примечание состояние до/после X(n, t) X a(n, t); - после: size()==n. создаёт последовательность с n копиями t. X(i, j) X a(i, j); - после: size()==расстоянию между i и j. создаёт последовательность, равную диапазону [i, j). a.insert(p, t) iterator вставляет копию t перед p. возвращаемое значение указывает на вставленную копию. a.insert(p, n, t) результат не используется вставляет n копий t перед p. a.insert(p, i, j) результат не используется вставляет копии элементов из диапазона [i, j) перед p. a.erase(q) результат не используется удаляет элемент, указываемый q. a.erase(ql, q2) результат не используется удаляет элементы в диапазоне [ql, q2).
vector (вектор), list (список) и deque (двусторонняя очередь) выдвигают программисту различные предложения сложности и должны использоваться соответственно. vectоr - тип последовательности, которая используется по умолчанию. list нужно использовать, когда имеются частые вставки и удаления из середины последовательности, deque - структура данных для выбора, когда большинство вставок и удалений происходит в начале или в конце последовательности.
Типы iterator и const_iterator для последовательностей должны быть, по крайней мере, из категории последовательных итераторов.
Таблица 11. Необязательные операции последовательностей
выражение возвращаемый тип семантика исполнения контейнер a.front() reference; const_reference для постоянного a *a.begin() vector, list, deque a.back() reference; const_reference для постоянного a *a.(--end()) vector, list, deque a.push_front(t) void a.insert(a.begin(), t) list, deque a.push_back(t) void a.insert(a.end(), t) vector, list, deque a.pop_front() void a.erase(a.begin()) list, deque a.pop_back() void a.erase(--a.end()) vector, list, deque a[n] reference; const_reference для постоянного a *(a.begin() + n) vector, dequeВсе операции в расположенной выше таблице обеспечиваются только для контейнеров, для которых они занимают постоянное время.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
21.3.2. Управляющие последовательности
21.3.2. Управляющие последовательности Существуют несколько отдельных типов управляющих последовательностей. Самый простой тип представляет собой символ перехода (^[), за которым следует один командный символ. (Несмотря на то что символ перехода отображается в строках С
21.3.4. Составные управляющие последовательности
21.3.4. Составные управляющие последовательности Пять двухсимвольных управляющих последовательностей (которые показаны в табл. 21.3) фактически являются префиксами более длинных и сложных последовательностей. Рассмотрим каждую из них по очереди.Таблица 21.3. Составные
Перемещение клипов в последовательности
Перемещение клипов в последовательности В процессе создания фильма может понадобиться переместить клип в последовательности, например, если вы изначально неправильно расположили клипы или решили изменить сценарий фильма.Существует несколько способов изменения
Сортировка в убывающей последовательности
Сортировка в убывающей последовательности Для сортировки в убывающей последовательности задайте ключевое слово после имени поля, по которому проводится сортировка. Например, если нужно отобрать из таблицы tblOrder записи так, чтобы сначала располагались самые последние
2.33. Генерирование последовательности строк
2.33. Генерирование последовательности строк Изредка бывает необходимо получить «следующую» строку. Так, следующей для строки "aaa" будет строка "aab" (затем "aac", "aad" и так далее). В Ruby для этой цели есть метод succ:droid = "R2D2"improved = droid.succ # "R2D3"pill = "Vitamin B"pill2 = pill.succ # "Vitamin C"He
7.9. Преобразование элементов последовательности
7.9. Преобразование элементов последовательности ПроблемаИмеется последовательность элементов, и с каждым элементом требуется выполнить какие-либо действия — либо на месте, либо скопировав их в другую последовательность.РешениеИспользуйте стандартные алгоритмы transform
Числовые последовательности
Числовые последовательности Вот две известные в информатике головоломки. Сожалею, что обманываю ожидания своих коллег, которые не найдут здесь ничего нового…?* Головоломка 5. Последовательность Хэмминга.Рассмотрим числа, не имеющие других простых делителей, кроме 2, 3 и 5.
Управляющие последовательности
Управляющие последовательности Как и в других языках, подобных C, строковые литералы в C# могут содержать различные управляющие последовательности, которые интерпретируются как определенный набор данных, предназначенных для отправки в выходной поток. Каждая
Последовательности
Последовательности Последовательность - это набор данных, которые можно перебрать один за другим в некотором порядке. К разновидностям последовательностей относятся одномерные динамические массивы array of T, списки List<T>, двусвязные списки LinkedList<T>, множества
Последовательности команд
Последовательности команд Часто для выполнения определенного действия пользователь должен по очереди раскрывать несколько пунктов меню. Например, чтобы запустить в Windows Vista программу Блокнот, нужно выполнить следующие действия.1. Нажать кнопку Пуск.2. Выбрать пункт Все