русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Контейнеры.


Дата добавления: 2015-07-09; просмотров: 614; Нарушение авторских прав


Контейнером называют объект одного из классов-контейнеров, входящих в библиотеку STL. Контейнер предназначен для хранения объектов, тип которых может быть как встроенным, так и пользовательским. Контейнеры создаются в свободной памяти при этом распределение памяти и сборка “мусора” выполняется автоматически. Классы-контейнеры подключается к программе с помощью одноименных заголовочных файлов.

Различают последовательные и ассоциативные классы- контейнеры. В данной работе используются только первые.

Среди последовательных - vector(вектор), list(список), deque(двусторонняя очередь) – наиболее распространенным является vector. Отличительной особенностью vector, как и всех контейнеров, является возможность увеличения количества элементов, хранящихся в контейнере, в процессе выполнения программы c помощью методов соответствующего класса. На его основе можно конструировать динамические массивы элементов различных типов, в том числе и определенных пользователем.

Для добавления в конец и удаления последнего элемента контейнера любого из трех рассматриваемых классов предназначены методы push_back() и pop_back(). Kpоме того, список и очередь (но не вектор) поддерживают операции вставки и удаления первого элемента контейнера push_front() и pop_front().

vector<double> vd; //Пустой контейнер

vd.push_back(45.56);

Все типы контейнеров имеют операции вставки и удаления элементов insert и erase. Наличие и эффективность тех или иных операций служат критерием выбора типа последовательного контейнера для конкретной задачи.

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



vector<int> v(20); // начальный размер контейнера – 20 элементов.

С этими 20 элементами мы можем работать как с обычным статическим массивом, используя гораздо более эффективные операции индексации и присваивания:

v[2]=3;

При этом в программе нужно фиксировать количество элементов, которые необходимо поместить в контейнер, и если их количество превышает 20, переходить к push_back.

Размер контейнера может быть изменен при работе программы функцией resize(N).

vector <char> vc;

vc.resize(34); // Размер контейнера 34

vc[6]=’d’;

Аналогом указателя в контейнерах используется итератор. Он должен быть определен в программе.

vector <int> vv1;

vector<int> ::iterator iv1; //Итератор

Метод begin возвращает значение итератора – указателя на начало контейнера, метод end – на конец.

Библиотека STL обладает т.н. алгоритмами (algorithm) – функциями обработки элементов контейнеров: поиска(find), сортировки(sort) и т.п. При использовании алгоритмов могут использоваться функциональные объекты [1].

Необходимо отметить, что при организации динамического массива, тип элементов кото-рого определяется пользователем, в соответствующем классе должен присутствовать конст-руктор без параметров или вообще не должно быть явно заданных конструкторов.

При использовании контейнеров надо помнить, что за увеличение возможностей, которые они предоставляют программисту, надо платить памятью и увеличением времени выполнения программы.

 



<== предыдущая лекция | следующая лекция ==>
Виртуальные функции | Обработка исключений


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.693 сек.