QVector <QVector int>>修改“内部”向量

use*_*867 3 c++ qt

我在QT中有以下变量:

QVector<QVector <int> > buff_d1;
Run Code Online (Sandbox Code Playgroud)

我需要修改“内部”向量:

buff_d1.at(i).removeFirst();
buff_d1.at(i).push_back(d1.at(i).at(sample_number));
Run Code Online (Sandbox Code Playgroud)

这导致错误:

    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));
Run Code Online (Sandbox Code Playgroud)

我了解“内部”向量是const,因此无法对其进行修改,但是它的解决方法是什么?

Mar*_* A. 5

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

const T & QVector::at(int i) const
Run Code Online (Sandbox Code Playgroud)

并且您正在尝试使用removeFirst()函数对其进行修改。您应该使用[]运算符对其进行修改,因为它提供了非常量返回的重载:

T & QVector::operator[](int i)
Run Code Online (Sandbox Code Playgroud)

第二个错误也是如此。