QVector <qvector int =“”>&gt;修改“内部”向量</qvector>

时间:2014-10-29 10:10:06

标签: c++ qt

我在QT中有以下变量:

QVector<QVector <int> > buff_d1;

我需要修改&#34;内部&#34;矢量:

buff_d1.at(i).removeFirst();
buff_d1.at(i).push_back(d1.at(i).at(sample_number));

导致错误:

    passing 'const QVector<int>' as 'this' argument of 'void QVector<T>::removeFirst() [with T = int]' discards qualifiers [-fpermissive] buff_d2.at(i).removeFirst();
    passing 'const QVector<int>' as 'this' argument of 'void QVector<T>::push_back(const T&) [with T = int]' discards qualifiers [-fpermissive] buff_d1.at(i).push_back(d1.at(i).at(sample_number));

我理解&#34;内部&#34; vector是const所以我无法修改它,但它的工作是什么?

2 个答案:

答案 0 :(得分:4)

您的at()函数返回const引用:

const T & QVector::at(int i) const

您正尝试使用removeFirst()功能对其进行修改。您应该使用[] operator来修改它,因为它提供了非常量的返回重载:

T & QVector::operator[](int i)

同样适用于第二个错误。

答案 1 :(得分:1)

at(int index)成员函数返回一个const引用,请参阅文档here,因此您需要使用operator[int index]返回非const引用以便能够修改它。