QT中QVector报错“index out of range”

QT中QVector报错“index out of range”

可以先看看QT5 的include/QtCore目录下的qvertor.h文件,这里面介绍了报错的详细信息。
举个例子:
template <typename T>
inline T &QVector<T>::operator[](int i)
{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector<T>::operator[]", "index out of range");
return data()[i]; }

对数组访问超界就会报上面的错。

值得注意的是,如果我们事先没有为Qvector分配空间,直接采用了数组下标的方式访问了QVector(即QVector[n]的形式),也会报访问超界的错。

解决方案如下,写个代码例子:

struct Node
{
    int u; 
    int w; 
    Node(int a, int b) :u(a), w(b){}
};
QVector<QList<Node>> V; //变量申明,此时还没有分配内存
int n=9;
QList<Node> list;
for(int i=0;i<n;i++)
{
    V.apend(list);             //使用apend动态分配内存
    V[i].push_back(Node(i,i)); //这样就可以使用V[i]进行赋值了
}

暂时这样就可以解决了,QVector中还有一个reserve(int size)的函数,也可以预先分配size个对象的内存,我尝试过了,没怎么成功,当然以后会完善这个函数的使用方法。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值