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

Разработка приложений на C++_Практическая работа №13

.pdf
Скачиваний:
0
Добавлен:
07.06.2025
Размер:
174.45 Кб
Скачать

Модуль 4 Тема 4.1 Практика

Имеется словарь городов. В словаре хранится название города и кол-во его жителей

QMap <QString,int> cities;

Запишите в поток output содержимое контейнера, если для контейнера определена следующая операция:

QDataStream & operator<< ( QDataStream & out, const QMap<Key, T> & map )

QT += core

main.cpp

#include <auroraapp.h>

#include <QtQuick>

#include <iostream> // Для вывода в терминал

#include <QCoreApplication>

#include <QDataStream>

#include <QMap>

#include <QMapIterator> // Для демонстрации значений в QMap

#include <QTimer>

using namespace std; //Строка

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

//Создание карты значений. QMap это и есть один из контейнеров в Qt. QMap <QString,int> cities;

//Добавление городов с самым маленьким населением в РФ

cities["Горбатов"] = 1982;

cities["Приморск"] = 1960; cities["Островной"] = 1847; cities["Плёс"] = 1796; cities["Артёмовск"] = 1688; cities["Курильск"] = 1591; cities["Верхоянск"] = 1122; cities["Высоцк"] = 1094; cities["Чекалин"] = 914; cities["Иннополис"] = 407;

//Выводим содержимое QMap в стандартный поток вывода cout << "Вывод содержимого cities." << endl; QMapIterator<QString, int> i(cities);

while (i.hasNext()) { i.next();

cout << qPrintable(i.key()) << ": " << i.value() << endl;

}

//Выполняем сериализацию cities

QByteArray data;

QDataStream output(&data, QIODevice::WriteOnly); output << cities;

//Выполняем десериализацию в new_cities QMap <QString,int> new_cities;

QDataStream input(&data, QIODevice::ReadOnly); input >> new_cities;

//Выводим содержимое QMap в стандартный поток вывода cout << "Вывод содержимого new_cities." << endl; QMapIterator<QString, int> ni(new_cities);

while (ni.hasNext()) { ni.next();

cout << qPrintable(ni.key()) << ": " << ni.value() << endl;

}

//Завершаем программу через 100 миллисекунд

QTimer::singleShot(100, &a, &QCoreApplication::quit);

return a.exec();

}