Библиотеки qt и stl. Иерархия объектов, коллекция, итераторы


Download 0.9 Mb.
bet6/9
Sana31.01.2023
Hajmi0.9 Mb.
#1142465
TuriЛабораторная работа
1   2   3   4   5   6   7   8   9
Bog'liq
1671980777134 Лаб раб 4п

typedef void(*PF)(QObject*,< дополнительные параметры>);
Функция имеет обязательный параметр типа QObject или QObject*, через который ей передается объект, для которого необходимо выполнить определенные действия.
Метод-итератор объявляется следующим образом:
void CCollection::ForEach(PF action,< дополнительные параметры >);
где action − единственный обязательный параметр-указатель на функцию, которая вызывается для каждого элемента группы; дополнительные параметры − передаваемые вызываемой функции параметры.
Затем определяется указатель на функцию и инициализируется передаваемой итератору функцией.
PF pf=myfunc;
Тогда итератор будет вызываться, например, для дополнительного параметра типа int, так:
gr.ForEach(pf,25);
Здесь gr − объект-коллекция.

Использование контейнерных классов библиотеки Qt.
Для реализации простого списка можно использовать контейнерные классы, предоставляемые библиотеками STL и Qt. Рассмотрим использование контейнерных классов QVector и QList (библиотека Qt) для организации списка студентов и преподавателей. Оба класса входят в ядро библиотеки Qt и для их использования нужно изменить файл проекта следующим образом.

Класс QVector <T> представляет собой структуру данных, очень похожую на обычный массив. Однако использование класса вектора предоставляет некоторые преимущества по сравнению с обычным массивом - например, можно получить количество содержащихся в нем элементов или динамически изменить его размер. Кроме того, этот контейнер, по сравнению с другими, наиболее экономично расходует память. Для добавления элементов в конец последовательного контейнера можно воспользоваться методом push_back(). К элементам вектора можно обратиться как посредством оператора индексации [], так и при помощи итератора. Размер вектора можно задать в конструкторе при его создании. По умолчанию только что созданный вектор будет иметь размер, равный 0, так как он не содержит ни одного элемента. Изменить его размер можно либо добавив к нему элементы, либо вызвав метод resize ().
Список QList<Т>. Список - это структура данных, представляющая собой упорядоченный набор связанных друг с другом элементов. Преимущество списков перед векторами и очередями состоит в том, что вставка и удаление элементов в любой позиции происходит эффективнее, поскольку для выполнения этих операций изменяется только минимальное количество указателей, исключение составляет лишь вставка элемента в центр списка. Но есть и недостаток - списки плохо приспособлены для поиска определенного элемента по индексу, и для этой цели лучше использовать векторы.
Списки реализует класс QList . В общем виде этот класс представляет собой массив указателей на элементы.

Пример использования классов QList<T> и QVector<T>


Download 0.9 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling