如何拥有 QMap 的 QVector

how to have a QVector of QMap

我想要一个QMap的QVector。我使用了这个语法:

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");

但这不起作用:

如果有人指导我使用正确的格式,我将不胜感激。

您正在获取“索引超出范围”,因为您正在访问一个空的 QVector。您需要先将 QMap 元素插入到 QVector 中。然后你可以访问 x[0] -> 对于第 0 个索引处的第一个 QMap,x[1] -> 对于第一个索引处的第二个 QMap...... 制作 QMap 对象。向其中插入元素。 制作 QVector 对象。将该 QMap 对象插入到此 QVector 中。 阅读文档并为其使用适当的函数 https://doc.qt.io/archives/qt-4.8/

出现“索引超出范围”错误是因为您试图访问不存在的矢量元素。与其访问数组的特定 index/element,不如先在 QVector 之外创建一个 QMap,然后再创建 x.push_back(map),这样地图就会愉快地放置在 QVector 的后面。

类似的事情适用于带有 std::vector 的普通 C++,因为您需要 push_backemplace_back 数据到 vector