【问题标题】:how to have a QVector of QMap如何拥有 QMap 的 QVector
【发布时间】:2021-08-25 16:44:50
【问题描述】:

我想要一个 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");

但这不起作用:

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

【问题讨论】:

  • 什么是d?我看到一个名为x 的变量。另外,请更具体一点,至于“这不起作用”的意思。不编译?运行不正确?
  • 我更正了变量名:) 还添加了图像。希望这很清楚。
  • 使用哪些函数将项目添加到QVector?您是否正在调用这些函数中的任何一个来向向量添加一个条目?我不是QVector 的用户,但如果是std::vector 之类的,则不要使用[ ] 添加项目。
  • 没错。我的错。谢谢

标签: c++ qt qmap qvector


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      相关资源
      最近更新 更多