
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Санкт-Петербургский Национальный исследовательский университет информационных технологий, механики и оптики»
|
|
Кафедра информационных систем
УТВЕРЖДАЮ
Заведующая кафедрой ИС
______________В.Г.Парфенов
“____“ ___________20___ г.
КОНСПЕКТ ЛЕКЦИЙ
по дисциплине |
ОПД.Ф.03 Объектно-ориентированный анализ и программирование |
|
(наименование дисциплины) |
-
Модуль №: _6_ Основные понятия ООП. Основы программирования для многозадачных операционных систем._______________________
Тема лекционных занятий: Контейнерные классы__________________________
Литература:
Основная:
1. |
Троелсен Э. С# и платформа .NET. Библиотека программиста.-СПб.: Питер, 2008. - 796 с. |
|
(наименование издания, страницы) |
2. |
Фролов А.В., Фролов Г.В. Язык С#. Самоучитель. - М.: Диалог — МИФИ, 2003. - 560 с. |
|
(наименование издания, страницы) |
3. |
|
|
(наименование издания, страницы) |
Дополнительная:
1. |
Тай Т., Лэм Х.К. Платформа .NET. Основы. - Спб.:Символ-Плюс,2003. -336 с. |
|
(наименование издания, страницы) |
2. |
Биллинг В.А. Основы программирования на C#. - М.: Изд-во «Интернет университет информационных технологий — ИНТУИТ.ру», 2006. -488 с. |
|
(наименование издания, страницы)
|
Электронные информационные источники |
|
1. |
http://de.ifmo.ru — конспекты лекций, электронные тесты |
|
|
2. |
http://cis.ifmo.ru-презентации лекций вспомогательные материалы |
|
|
Краткое содержание лекций по теме:
Контейнерные классы -- это универсальные шаблонные классы, предназначенные для хранения элементов заданного типа в смежных областях памяти. Стандарт C++ уже включает в себя большое количество контейнеров, как часть STL (Standard Template Library -- Стандартная Библиотека Шаблонов).
Qt имеет свой набор шаблонных классов. Таким образом, при создании программ разработчик может использовать как контейнерные классы из библиотеки Qt, так и классы из STL. Если вы уже знакомы с контейнерами из STL, то мы не видим веских причин для того, чтобы насильно заставлять себя переходить на использование контейнеров из Qt.
В этой главе мы рассмотрим наиболее важные контейнеры из STL и Qt. Мы так же поближе рассмотрим классы QString и QVariant, которые имеют много общего с контейнерами и в отдельных случаях могут использоваться как альтернатива контейнерам.
Списки.
Список (если быть более точным -- связанный список) -- это структура данных, которая может хранить элементы списка в областях памяти с произвольным размещением. В отличие от векторов, списки не предоставляют такого количества способов произвольного доступа к своим элементам, как векторы, но с другой стороны, функции insert() и erase() исполняются очень быстро.
Большинство алгоритмов работы с векторами не применимы к спискам, в особенности это относится к функциям sort() и binary_search(), по причине того, что списки не обладают возможностью быстрого доступа к произвольному элементу. Сортировка STL-списков выполняется функцией sort().
Словари (map).
Словари предназначены для хранения произвольного количества элементов, в виде пар "ключ-значение". Причем к "ключам" предъявляется требование уникальности. Словари обладают широкими возможностями доступа к произвольным элементам и незначительными накладными расходами на операцию добавления нового элемента. Если в словарь вставляется новое значение по существующему ключу, то оно затирает старое значение в паре "ключ-значение".
Контейнеры указателей.
Кроме STL-подобных контейнеров, Qt предоставляет еще целый ряд контейнерных классов. Они были разработаны в начале 90-х годов прошлого века для Qt 1.0, еще до того, как STL стала частью C++, и потому имеют свой характерный синтаксис. Поскольку эти классы оперируют указателями на объекты, их часто называют контейнерами указателей (pointer-based containers), в противоположность более современным контейнерам значений (value-based containers) Qt и STL. В Qt 4 контейнеры указателей еще останутся, для сохранения совместимости, но их использование не будет приветствоваться.
Контейнеры указателей сохраняют свою актуальность лишь благодаря тому, что в Qt 3 еще имеется ряд немаловажных функций, которые работают с ними. Один пример мы приводили в Главе 3, когда выполняли итерации по виджетам, второй -- в Главе 6, когда выполняли итерации по окнам в MDI-приложении.
Классы QString и QVariant.
Строки используются практически во всех программах ничуть не реже других типов.
Язык C++ предоставляет два типа строк: традиционные строки языка C -- массивы символов, завершающиеся символом '\0' и класс string. Qt предоставляет гораздо более мощный класс QString. Он предназначен для хранения строк с 16-ти битными символами Unicode. Unicode содержит наборы символов ASCII и Latin-1 с их обычными числовыми значениями. Но поскольку каждый символ в QString представлен 16-ю битами, он может содержать тысячи других символов.
Разработал:
_______________________
______________________
«____» _____________ 20__ г.