缩小QVector以保留最后10个元素并重新排列一项

时间:2018-11-10 01:20:58

标签: c++ qt qvector

我正在尝试找到最“有效”的方法,或者至少要足够快以使10k项向量缩小到最后10项并将最后选择的项移到其末尾。

我最初是使用这种方法缩小的:

QVector<QModelIndex> newVec(listPrimary.end() - 10, listPrimary.end());

但是这不起作用,我不确定如何使用Qt插入器/ std使其正常工作...

然后完成此测试

if(newVec.contains(lastItem))
{
    newVec.insert(newVec[vewVec.indexOf(newVec)],newVec.size());
}
else{
    newVec.push_back(lastItem);
}

1 个答案:

答案 0 :(得分:1)

QVector类具有一个method,可以满足您的需求:

  

QVector QVector :: mid(int pos,int length = ...)const
  返回一个子向量,该子向量包含此向量中的元素,从位置NSObject开始。如果pos为-1(默认值),则包括length之后的所有元素;否则为0。否则,将包括pos个元素(或所有剩余元素(如果少于length个元素)。

因此,如注释中所建议,您可以执行以下操作:

length

您不必传递auto newVec = listPrimary.mid(listPrimary.size() - 10); ,因为其默认值可确保包含length之后的所有元素。