Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet159/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   155   156   157   158   159   160   161   162   ...   193
Bog'liq
Book-qtC


Глава 12. Структура проекта. Основные типы
Обратите внимание: после того, как мы добавили ещё одно значение с тем
же ключом (Marry), предыдущее значение было перезаписано новым значением.
Для того, чтобы добавить несколько значений с одним и тем же ключом можно
воспользоваться методом insertMulti().
#include 
. . .
QHash l C l a s s i f i c a t i o n H a s h ;
//Добавляем несколько значений с одинаковыми ключами
l C l a s s i f i c a t i o n H a s h . i n s e r t M u l t i ( " f r u i t s " , " a p p l e " ) ;
l C l a s s i f i c a t i o n H a s h . i n s e r t M u l t i ( " f r u i t s " , " o r a n g e " ) ;
l C l a s s i f i c a t i o n H a s h . i n s e r t M u l t i ( " v e g e t a b l e s " , " p o t a t o " ) ;
l C l a s s i f i c a t i o n H a s h . i n s e r t M u l t i ( " v e g e t a b l e s " , " c a b b a g e " ) ;
l C l a s s i f i c a t i o n H a s h . i n s e r t M u l t i ( " v e g e t a b l e s " , " t o m a t o " ) ;
qDebug ( )<qDebug ( )<qDebug ( )<Получим следующий вывод в консоль:
"orange"
("orange", "apple")
("tomato", "cabbage", "potato")
Для итерации по списку можно воспользоваться макросом foreach. Также
можно воспользоваться итератором в стиле Java. Например:
QList l L i s t ; //Создаём список целых чисел
l L i s t . append ( 3 ) ;
//Добавляем элементы
l L i s t . append ( 6 ) ;
l L i s t . append ( 9 ) ;
Q L i s t I t e r a t o r  l I t ( l L i s t ) ; //Создаём итератор для списка
while ( l I t . hasNext ( ) ) //Пока следующий элемент существует
{
qDebug ( ) << l I t . n e x t ( ) ; //...вывести следующий элемент
}
Другой пример — итерация в обратном направлении. На этот раз используем
хеш.
QHash lNumberByName ;
lNumberByName . i n s e r t ( " t w e l v e " , 1 2 ) ;
lNumberByName . i n s e r t ( " t h i r t y t h r e e " , 3 3 ) ;
lNumberByName . i n s e r t ( " o n e h u n d r e d an t w e n t y f i v e " , 1 2 5 ) ;
Q H a s h I t e r a t o r  l H a s h I t e r a t o r ( lNumberByName ) ;
l H a s h I t e r a t o r . toBack ( ) ; //Перейти к концу контейнера — итератор указывает после
//последнего элемента
while ( l H a s h I t e r a t o r . h a s P r e v i o u s ( ) )
{
l H a s h I t e r a t o r . p r e v i o u s ( ) ; //Переходим к предыдущемму элементу
//Выводим ключ и значение
qDebug ( ) << l H a s h I t e r a t o r . key ( )<< " - " << l H a s h I t e r a t o r . v a l u e ( ) ;
}
Следующий пример — с итератором в стиле STL.
QHash : : c o n s t _ i t e r a t o r l S t l L i k e I t e r a t o r ;
f o r ( l S t l L i k e I t e r a t o r = lNumberByName . b e g i n ( ) ;
l S t l L i k e I t e r a t o r != lNumberByName . end ( ) ;
l S t l L i k e I t e r a t o r ++)
{
qDebug ( ) << l S t l L i k e I t e r a t o r . key ( )<< " - "
//Тоже самое, что и ∗ l S t l L i k e I t e r a t o r
<< l S t l L i k e I t e r a t o r . v a l u e ( ) ;
}
Программирование на языке С++ в среде Qt Creator


12.6. Работа с файлами
351
В таблице 12.3 приведены разновидности контейнеров Qt.
Таблица 12.3: Контейнеры Qt
Переменная
Описание особенностей
QList
Список общего назначения для использования в большинстве си-
туаций, которые возникают при разработке. Имеет оптимальное
быстродействие в большинстве случаев.
QLinkedList
Реализует связный список в Qt. Отсутствует операция доступа
по индексу элемента (такая как at(int pos)).
QVector
Реализует вектор элементов в Qt.
QStack
Реализует стек. Стек размещает элементы по принципу LIFO
(Last In, First Out) — элемент, добавленный первым будет по-
следним элементом в стеке.
QQueue
Реализует очередь. Очередь размещает элементы по принципу
FIFO (First In, First Out) — элемент, добавленный первым, будет
первым элементом в очереди.
QSet
Множество элементов. Гарантирует, что все элементы будут уни-
кальными.
QMap
Контейнерный класс для словаря. Элементы добавляют парами:
ключ-значение. Словарь всегда сортирует элементы по ключу.
Позволяет найти элемент по ключу.
QMultiMap
Контейнерный класс словаря создан для удобной работы с тем,
чтобы каждому ключу соответствовало несколько значений. Ме-
тод insert() не заменяет значение ключа, если ключ уже суще-
ствует, а добавляет новую пару ключ-значение.
QHash
Контейнерный класс для хеша. Элементы добавляют парами:
ключ — значение. Элементы хранятся в хеше в произвольном
порядке. Позволяет выполнять очень быстрый поиск элемента
по ключу.
QMultiHash
Контейнерный класс хеша, создан для удобной работы с тем,
чтобы каждому ключу соответствовало несколько значений. Ме-
тод insert() не заменяет значение ключа, если ключ уже суще-
ствует, а добавляет новую пару ключ-значение.
12.6
Работа с файлами
Инструментарий Qt содержит большое количество средств, которые позво-
ляют разработчику абстрагироваться от деталей реализации на той или иной
программной платформе. В этом разделе мы рассмотрим средства, Qt предо-
ставляет для работы с файловой системой.
Все устройства ввода/вывода в Qt наследуют от абстрактного клас-
са QIODevice. Среди его потомков: буфер для данных (QBuffer), процесс
— программа которая выполняется в системе (QProcess), сетевой сокет
(QAbstractSocket) и другие. Мы же подробно рассмотрим работу с другим его
потомком — классом для работы с файлом (QFile).
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


352
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   155   156   157   158   159   160   161   162   ...   193




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish