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

3

我在QT中有以下变量:

QVector<QVector <int> > buff_d1;

我需要修改"inner"向量:

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

我理解“inner”向量是const的,所以我不能修改它,但有什么解决方法吗?

2个回答

5

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

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

如果您想使用removeFirst()函数修改此内容,请注意使用[]操作符进行修改,因为它提供了非const返回重载:

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

同样适用于第二个错误。

1
返回已翻译的文本:或value(int at)。方法“at”用于防止创建深层副本(例如在迭代向量时)。 - Marek R

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接