You need to enable JavaScript to run this app. 如何正确定义及使用存储QMap<QString,QString>元素的QVector
优惠活动
大模型
产品
解决方案
定价
更多

如何正确定义及使用存储QMap<QString,QString>元素的QVector

问题原因

你声明的QVector<QMap<QString, QString>> x初始为空,没有任何元素,直接通过下标[0]、[1]访问未分配的位置会触发数组越界错误,这就是代码运行报错的核心原因。

正确实现方式

你可以根据使用场景选择以下任意一种实现方案:

  • 方法1:先调用append()追加空QMap元素,再操作对应位置的元素
QVector<QMap<QString, QString>> x;
// 追加第一个空QMap元素
x.append(QMap<QString, QString>());
x[0].insert("name", "jim");
x[0].insert("lname", "helpert");
// 追加第二个空QMap元素
x.append(QMap<QString, QString>());
x[1].insert("name", "dwight");
x[1].insert("lname", "schrute");
  • 方法2:预先分配vector容量后再通过下标操作
// 初始化时直接指定vector包含2个空QMap元素
QVector<QMap<QString, QString>> x(2);
x[0].insert("name", "jim");
x[0].insert("lname", "helpert");
x[1].insert("name", "dwight");
x[1].insert("lname", "schrute");

如果是已经声明过的vector,也可以调用x.resize(2)分配对应数量的元素后再用下标访问。

  • 方法3:使用初始化列表直接构造(Qt5及以上版本支持,代码更简洁)
QVector<QMap<QString, QString>> x = {
    {{"name", "jim"}, {"lname", "helpert"}},
    {{"name", "dwight"}, {"lname", "schrute"}}
};

内容的提问来源于stack exchange,提问作者Seyed Mahdi Jalali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 08:54:06