不可能从像 C++ 向量这样的迭代器构造一个新的 QVector 对象吗?
QVector<double> new_vec(vec_old.begin()+100,vec_old.end())
当我尝试做这样的事情时出现错误。还有什么是从其他 QVector 的一部分构造新 QVector 对象的最佳方法?
作为一种解决方法,您可以使用fromStdVector
:
auto qv = QVector<double>::fromStdVector(std::vector<double>(
vec_old.begin() + 100, vec_old.end()));
根据 Qt 文档,这是不可能的。
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);
这只会复制从某个指定位置开始直到结束的数据,就像你写的一样。