Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 6
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование интернет кафе на GPSS + Отчет
Моделирование работы участка термической обработки шестерен на GPSS + По...
Моделирование автомойки на GPSS + Отчет + Блок схемы

Операции с контейнером
Все операции с контейнером можно разделить на несколько групп:
• операции доступа к элементам, включая операцию замены значений элементов;
• операции добавления и удаления отдельных элементов или групп элементов;
• операции поиска элементов и групп элементов;
• операции с контейнером как объектом; в частности, важными являются операции объединения контейнеров;
• прочие (специальные) операции, зависящие от вида контейнера.
Операции доступа мы уже рассмотрели. Операции добавления и удаления элементов работают только для контейнера переменного размера. Очевидно, что эти операции с элементами можно выполнять самыми разными способами:
• добавлять и удалять элементы в начале контейнера;
• то же самое делать в «хвосте» контейнера;
• вставлять элементы перед текущим элементом или после него, удалять текущий элемент;
• делать вставки в соответствии с некоторым порядком сортировки элементов контейнера, в этом случае обязательно выполняется операция поиска;
• удалять элемент, содержимое которого равно заданному, в этом случае «за кадром» тоже работает операция поиска.
Первые три операции обычно применяются к последовательным контейнерам. Способ вставки и удаления определяет вид последовательного контейнера. Если вставка и удаление выполняются только на одном конце контейнера, то такой контейнер называется стеком, а работает он в соответствии с дисциплиной обслуживания LifO (Last In First Out — последним вошел, первым вышел). Говорят, что текущий элемент находится на вершине стека. Если же элементы добавляются на одном конце, а удаляются из другого, контейнер называется очередью. Очередь работает в соответствии с дисциплиной обслуживания FifO (First In First Out — первым пришел, первым ушел). Можно выполнять и вставку, и удаление на обоих концах контейнера — такой контейнер называется деком (от английского термина deque1, который является аббревиатурой от «double ended queue», то есть «очередь с двумя концами»). Таким образом, дек представляет собой обобщение очереди и стека.
Если же контейнер ассоциативный, то он упорядочен по полю доступа, поэтому операции вставки и удаления всегда выполняются в последних вариантах. Но и последовательный контейнер может быть отсортирован, поэтому операция вставки тоже может вставлять «по порядку». Примером отсортированного последовательного контейнера является приоритетная очередь priori ty_queue — один из последовательных контейнеров стандартной библиотеки.
Все операции, которые мы рассматривали до сих пор, — это операции с отдельными элементами контейнера. Но и с самим контейнером или его частью можно выполнять некоторые операции — вспомните класс TString (см. листинг 4.2). Обычно строки можно инициализировать другими строками и присваивать. Строки можно объединять разными способами, можно выполнять много разных операций с подстроками. Аналогично — и с контейнерами. Наиболее часто используется операция объединения двух контейнеров с получением нового контейнера, которая может быть реализована в различных вариантах:
• простое сцепление двух контейнеров, в новый контейнер попадают все элементы и первого, и второго контейнеров; операция не коммутативна;

Этот термин, ставший ныне общепринятым, впервые использовал Дональд Кнут.

• объединение упорядоченных контейнеров, называемое слиянием, в новый контейнер попадают все элементы первого и второго контейнеров; объединенный контейнер упорядочен; операция коммутативна;
• объединение двух контейнеров как объединение множеств, в новый контейнер попадают только те элементы, которые есть хотя бы в одном контейнере; операция коммутативна;
• объединение двух контейнеров как пересечение множеств, в новый контейнер попадают только те элементы, которые есть в обоих контейнерах; операция коммутативна.
Одной из операций с контейнером является извлечение из него части элементов и создание из них нового контейнера. Часто эту операцию выполняет конструктор, а требуемая часть контейнера задается двумя итераторами.
Отдельно необходимо сказать о контейнерах-множествах. Множество — это контейнер, в котором каждый элемент единственный. Помимо операций объединения и пересечения, для контейнеров-множеств реализуется операция вычитания множеств: в контейнер-результат попадают только те элементы первого контейнера, которых нет во втором; операция не коммутативна. Очень часто с множествами выполняется операция проверки включения, которая фактически является операцией поиска (как отдельного элемента, так и подмножества элементов).
Тип элементов оказывает существенное влияние на то, какие операции могут выполняться с контейнером. Например, для строк операция сортировки обычно не нужна, а для числовых контейнеров или для списка счетов в банке такая операция может быть не только полезной, но и необходимой. Для числовых контейнеров, очевидно, часто необходимы операции поиска минимума и максимума, суммы и произведения элементов контейнера — как в нашем «умном» массиве (см. листинг 5.2).
Опубликовал Kest November 05 2013 14:43:10 · 0 Комментариев · 5325 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Длинный заголовок...
PDJ Scrollers
WAP версия сайта
Halcyon
FilesInfo
PRNDbgrid
PHP глазами хакера
База Allsubmitter...
Усложнённый кальк...
C++ Builder 6 СПР...
TmxOutlookBarPro
Delphi 2005 для .NET
MPTools
Панель для реклам...
В.Понамарев - COM...
Электронный магаз...
DiZsubmit
AJAX и PHP. разра...
Delphix Sample [И...
Иллюстрированный ...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97843
Converter AMR<-... 20268
GPSS World Stud... 17020
Borland C++Buil... 14195
Borland Delphi ... 10302
Turbo Pascal fo... 7376
Калькулятор [Ис... 5987
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Поддержка пользова...
Прогрессивные джек...
Base) 326Microsoft...
10.7. Дополнительн...
ПМ Казино с бонусо...
Основы архитектуры VM
ИСПОЛЬЗОВАНИЕ ОТСЕ...
Замена регулятора ...
Windows Server vNe...
2.3. Операторы
Метаданные
Управление устройс...
Добавление узлов в...
Интерфейс семафоро...
op(X,Y,Z)
Порядок в базе данных
Основные понятия О...
______ * "*РезюмеР...
сервер DNS, один к...
Audit directory se...
Удаление компонент...
Российский стандар...
РЕШЕНИЕ: УПРОЩЕНИЕ...
Использование буф...
Чтение файлов MS W...
Статистика



Друзья сайта
Программы, игры
Error: Incorrect password!
Error: Incorrect password!


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?