Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C# (ИТИП) / Лекции / Лекция 7(Контейнерные классы)

.doc
Скачиваний:
102
Добавлен:
25.02.2015
Размер:
284.16 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Санкт-Петербургский Национальный исследовательский университет информационных технологий, механики и оптики»

Кафедра информационных систем

УТВЕРЖДАЮ

Заведующая кафедрой ИС

______________В.Г.Парфенов

“____“ ___________20___ г.

КОНСПЕКТ ЛЕКЦИЙ

по дисциплине

ОПД.Ф.03 Объектно-ориентированный анализ и программирование

(наименование дисциплины)

            1. Модуль №: _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__ г.