我在QMap<double, double> a
中有一些元素-元素。现在我想获得 a
的一些值的向量。最简单的方法是(对我来说):
int length = x1-x0;
QVector<double> retVec;
for(int i = x0; i < length; i++)
{
retVec.push_back(a.values(i));
}
与x1
和x0
作为要复制的元素的停止位置和开始位置。但是有没有比使用这个 for 循环更快的方法呢?
编辑:“更快”的意思是打字速度更快(正如指出的那样,这是不可能的)执行速度更快。正如已经指出的那样,values(i)
没有按预期工作,因此我将把它作为伪代码留在这里,直到找到更好的替代品。
最佳答案
也许这有效:
QVector<double>::fromList(a.values().mid(x0, length));
这个想法是获取所有值作为 double
的列表s,提取您感兴趣的子列表,然后通过 QVector
已经存在的静态方法从该列表创建一个向量。 .
编辑
正如评论和更新的问题中所建议的,它遵循打字速度较慢但速度更快的解决方案:
QVector<double> v{length};
auto it = a.cbegin()+x0;
for(auto last = it+length; it != last; it++) {
v.push_back(it.value());
}
我假设x0
和length
照顾 key 列表的实际长度,因此 a.cbegin()+x0
是有效的,不值得添加防护 it != a.cend()
也是如此。
关于qt - 获取 QMap 的一部分作为 QVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33707052/