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クラスリファレンス

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);

これは、あなたが書いたように、特定の位置から最後までデータをコピーするだけです。

于 2012-11-23T00:33:26.893 に答える