qt - 获取 QMap 的一部分作为 QVector

标签 qt qmap qvector

我在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));
}

x1x0作为要复制的元素的停止位置和开始位置。但是有没有比使用这个 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());
}

我假设x0length照顾 key 列表的实际长度,因此 a.cbegin()+x0是有效的,不值得添加防护 it != a.cend()也是如此。

关于qt - 获取 QMap 的一部分作为 QVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33707052/

相关文章:

c++ - 在 QThread::run 中间调用一个槽

c++ - 以指针为键的QMap

qt - 为什么 QMap 在 findNode 函数中调用 contains() 时崩溃?

c++ - 错误 C2059 : 'constant' when trying to create a Qt container in a header file with known size

qt - 是否可以通过const方法发出Qt信号?

c++ - 如何发送人工 QKeyEvent 到 QWebEngineView?

c++ - 如何将paraview源码编译成Qt工程(.pro)?

c++ - QMap 和 std::unique_ptr

c++ - 如何在 QT 中正确显示 std::vector?