QT中QVector报错“index out of range”

QT中QVector报错“index out of range”

可以先看看QT5 的include/QtCore目录下的qvertor.h文件,这里面介绍了报错的详细信息。
举个例子:
template
inline T &QVector::operator[](int i)
{ Q_ASSERT_X(i >= 0 && i < d->size, "QVector::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> V; //变量申明,此时还没有分配内存
int n=9;
QList list;
for(int i=0;ilist);             //使用apend动态分配内存
    V[i].push_back(Node(i,i)); //这样就可以使用V[i]进行赋值了
}

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

你可能感兴趣的:(QT开发)