问题描述
我想要一个 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/
,出现“索引超出范围”错误是因为您试图访问不存在的向量元素。与其访问数组的特定索引/元素,不如先在 QVector 之外创建一个 QMap,然后再创建一个 x.push_back(map)
,这样地图就会被愉快地放置在 QVector 的后面。
类似的事情适用于带有 std::vector
的普通 C++,因为您需要将 push_back
或 emplace_back
数据传输到向量上