带迭代器的QVector对象构造

时间:2012-11-23 00:28:56

标签: c++ qt

是否无法从C ++向量等迭代器构造新的QVector对象?

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

当我尝试做类似这样的事情时,我遇到了错误。那么从其他QVector的一部分构造一个新的QVector对象的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

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

auto qv = QVector<double>::fromStdVector(std::vector<double>(
                         vec_old.begin() + 100, vec_old.end()));

答案 1 :(得分:4)

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

QVector Class Reference

回答第二个问题,要从其他QVector的部分创建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);

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