как получить QVector QMap

#c #qt #qmap #qvector

Вопрос:

Я хочу иметь QVector QMap. Я использовал этот синтаксис:

 QVector<QMap<QString, QString>> x;
x[0].insert("name", "jim");
x[0].insert("lname", "helpert");
x[1].insert("name", "dwight");
x[1].insert("lname", "schrute");
 

но это не работает:

введите описание изображения здесь

Я был бы признателен, если бы кто — нибудь указал мне правильный формат.

Комментарии:

1. Что такое d ? Я вижу переменную с именем x . Кроме того, пожалуйста, будьте более конкретны, что означает «это не работает». Не компилируется? Работает неправильно?

2. Я исправил имя переменной:) также добавил изображение. надеюсь, это ясно.

3. Какие функции используются для добавления элементов в a QVector ? Вызываете ли вы какую-либо из этих функций, чтобы добавить запись в вектор? Я не являюсь пользователем QVector , но если это что-то подобное std::vector , вы не добавляете элементы с помощью [ ] .

4. верно. моя вина. Спасибо

Ответ №1:

Ошибка «Индекс вне диапазона» возникает из-за того, что вы пытаетесь получить доступ к элементу вектора, которого не существует. Вместо доступа к определенному индексу/элементу массива было бы лучше сначала создать QMap за пределами QVector, а затем x.push_back(map) , чтобы карта была счастливо размещена в задней части QVector.

Аналогичная вещь применима к обычному C , std::vector когда вам нужно либо push_back или emplace_back данные на вектор

Ответ №2:

Вы получаете «Индекс вне диапазона», потому что вы обращаетесь к пустому QVector. Сначала вам нужно вставить элементы QMap в QVector. Затем вы можете получить доступ к x[0] -> для первой QMap с 0-м индексом, x[1] — > > для второй QMap с 1-м индексом……. Создайте объект QMap. Вставьте в него элементы. Сделайте объект QVector. Вставьте этот объект QMap в этот QVector. Прочитайте документы и используйте соответствующие функции для этого https://doc.qt.io/archives/qt-4.8/