3

不可能从像 C++ 向量这样的迭代器构造一个新的 QVector 对象吗?

QVector<double> new_vec(vec_old.begin()+100,vec_old.end())

当我尝试做这样的事情时出现错误。还有什么是从其他 QVector 的一部分构造新 QVector 对象的最佳方法?

4

2 回答 2

5

作为一种解决方法,您可以使用fromStdVector

auto qv = QVector<double>::fromStdVector(std::vector<double>(
                         vec_old.begin() + 100, vec_old.end()));
于 2012-11-23T00:53:07.463 回答
4

根据 Qt 文档,这是不可能的。

QVector 类参考

QVector回答你的第二个问题,从 other 的一部分创建一个QVector,我相信以下是最好的选择之一:

QVector<double> new_vec(vec_old.size-100);
double* dt = vec_old.constData;
dt += 100; // some pointer arithmetic.
new_vec.fill((*dt), vec_old.size-100);

这只会复制从某个指定位置开始直到结束的数据,就像你写的一样。

于 2012-11-23T00:33:26.893 回答