Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 63515
Модуль Forms 63356
ТЕХНОЛОГИИ ДОСТ... 60108
Пример работы с... 59160
Имитационное мо... 55567
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

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

Файл записей с выводом обратного заголовка на Turbo Pascal
База данных студентов на Delphi + Microsoft SQL Server
Обработка задач на ЭВМ на GPSS + Пояснительная записка

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Операции с контейнером
Все операции с контейнером можно разделить на несколько групп:
• операции доступа к элементам, включая операцию замены значений элементов;
• операции добавления и удаления отдельных элементов или групп элементов;
• операции поиска элементов и групп элементов;
• операции с контейнером как объектом; в частности, важными являются операции объединения контейнеров;
• прочие (специальные) операции, зависящие от вида контейнера.
Операции доступа мы уже рассмотрели. Операции добавления и удаления элементов работают только для контейнера переменного размера. Очевидно, что эти операции с элементами можно выполнять самыми разными способами:
• добавлять и удалять элементы в начале контейнера;
• то же самое делать в «хвосте» контейнера;
• вставлять элементы перед текущим элементом или после него, удалять текущий элемент;
• делать вставки в соответствии с некоторым порядком сортировки элементов контейнера, в этом случае обязательно выполняется операция поиска;
• удалять элемент, содержимое которого равно заданному, в этом случае «за кадром» тоже работает операция поиска.
Первые три операции обычно применяются к последовательным контейнерам. Способ вставки и удаления определяет вид последовательного контейнера. Если вставка и удаление выполняются только на одном конце контейнера, то такой контейнер называется стеком, а работает он в соответствии с дисциплиной обслуживания 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 18:43:10 · 0 Комментариев · 4072 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
JanComp
Мониторинг сервер...
Программа рисует ...
MP3 Архив v.2.0
Пример работы с б...
Пример OpenGL гра...
Plasma
WinAmp
Matrix2D
Популярные загрузки
PHP/MySQL для нач...
AlnComponents
Win-Prolog 3.618
Java в примерах -...
Генетический алго...
Самоучитель PHP 4
BSButton
32 урока по Delphi
Averaging [Исходн...
Delphi7 Для профе...

Топ загрузок
Приложение Клие... 100443
Delphi 7 Enterp... 85583
Converter AMR<-... 20065
GPSS World Stud... 12438
Borland C++Buil... 11512
Borland Delphi ... 8474
Turbo Pascal fo... 7020
Visual Studio 2... 4987
Калькулятор [Ис... 4722
FreeSMS v1.3.1 3533
Случайные статьи
Search Promotion: ...
Алгоритм unordered...
Создание файла док...
БЛОКИ ДЛЯ ОБРАБО...
Табл. 5-3.
модель для хранени...
Этот элемент управ...
Команда Create Tab...
UNIX предъявляет р...
Примечание Для про...
Type mismatch
Форма Flat - работ...
Интернет-соединени...
ОШИБКИ ОКРУГЛЕНИЯ
Протокол PPPoE
Свойство типа множ...
РЕКУРСИЯ
Альтернативные спе...
Интернет-казино Ву...
Подготовка програм...
Многоканальные уст...
Строки в стиле С++
Undefined label in...
Error in expression
Studio, то объект ...
Статистика



Друзья сайта
Программы, игры


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