【问题标题】:Using a subset of a QVector in a function在函数中使用 QVector 的子集
【发布时间】:2013-08-31 12:52:56
【问题描述】:

如何将 QVector 的一部分发送给函数?

QVector<int> a;
a.append(1);
a.append(2);
a.append(3);
a.append(4);
a.append(5);

某些打印函数应该以向量的子集作为参数打印“2 3 4”。

在 R 中,这可以使用 a[2:4]

这有可能吗?

注意:在std::vector中,建议使用insert函数创建一个新变量。这是一个不同于 QVector 的插入,因此我找不到推荐的方法。

【问题讨论】:

  • 基于对文档的快速浏览,这似乎是不可能的。至少不是以任何简洁的方式。也许你应该使用 std::vector 而不是 QVector。它似乎有一个更好的界面。
  • @john 问题是我将使用一个需要 QVector 的 QCustomPlot。

标签: c++ qt qvector


【解决方案1】:

我必须写至少 30 个字符,这样我才能告诉你,你应该试试:

a.mid(1,3);

【讨论】:

  • 哇,这么简单的事情。我很惊讶它如此容易被忽视。
【解决方案2】:

您总是可以编写一个函数来为您执行此操作,例如

QVector<int> sub_vector(const QVector<int>& vec, size_t from, size_t to)
{
    QVector<int> subvec;
    for (size_t i = from; i <= to; ++i)
        subvec.append(vec[i]);
    return subvec;
}

【讨论】:

  • 追加似乎是一个缓慢的解决方案?
  • 性能很关键吗?我想你可以添加一个预约电话。
【解决方案3】:

是的,这是可能的,但你必须传递一对迭代器(你想要的范围的开始和结束,你可以使用 std::pair 只传递一个参数,或者使用一个更清晰的方法来接受两个 QVector::iterator 参数这样就更清楚您的意思是该函数取一个范围)或者如果它对您更简单(或者您想要的元素在原始 QVector 中不是连续顺序)构造另一个仅包含所选元素的 QVector(一种解决方案john 提议)。

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 2013-03-16
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多