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のドキュメントによると、これは不可能です。
2番目の質問に答えて、QVector
他の一部からを作成するQVector
には、次のことが最良のオプションの1つであると思います。
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);
これは、あなたが書いたように、特定の位置から最後までデータをコピーするだけです。