我正在尝试找到最“有效”的方法,或者至少要足够快以使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);
}
答案 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
之后的所有元素。