2

如何将 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,但我找不到推荐的方法。

4

3 回答 3

11

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

a.mid(1,3);
于 2013-08-31T14:10:56.933 回答
1

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

于 2013-08-31T13:07:32.113 回答
1

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

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;
}
于 2013-08-31T13:02:59.077 回答