是否无法从C ++向量等迭代器构造新的QVector对象?
QVector<double> new_vec(vec_old.begin()+100,vec_old.end())
当我尝试做类似这样的事情时,我遇到了错误。那么从其他QVector的一部分构造一个新的QVector对象的最佳方法是什么?
答案 0 :(得分:5)
作为解决方法,您可以使用fromStdVector
:
auto qv = QVector<double>::fromStdVector(std::vector<double>(
vec_old.begin() + 100, vec_old.end()));
答案 1 :(得分:4)
根据Qt文档,这是不可能的。
回答第二个问题,要从其他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);
这只会复制从某个指定位置开始直到结束的数据,就像你写的一样。