QVector<QVector int> > modify "inside" vector

QVector<QVector int> > modify "inside" vector

本文关键字:gt QVector inside vector int lt modify      更新时间:2023-10-16

我在QT中有以下变量:

QVector<QVector <int> > buff_d1;

我需要修改"内部"向量:

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));

我知道"内部"向量是常量,所以我不能修改它,但围绕它的工作是什么?

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

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

您正试图使用removeFirst()函数对此进行修改。您应该使用[]运算符来修改它,因为它提供了一个非常常量返回重载:

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

第二个错误也是如此。

at(int index)成员函数返回一个常量引用,请参阅此处的文档,因此您需要使用operator[int index]返回一个非常量引用才能对其进行修改。