1

Qt コンテナーを何度か使用して c++ stl に戻った後、Qt コンテナーの方がずっと快適であることがわかりました。時々、 write stl は非常に冗長な方法で rebus を解決するように思えます。

だから、QObjects以外の派生物内でQt Containersのインスタンスを使用することに何らかの副作用があるかどうか疑問に思っています

4

4 に答える 4

2

Qt コンテナーは、「通常の」オブジェクトで問題なく使用できます。ただし、STL コンテナーが使用する一部の C++ 機能を利用しないため、クラスに追加の要件が課される可能性があることに注意してください。

たとえば、QVector(他の Qt コンテナーと同様に) デフォルトのコンストラクターが必要で、要素を追加するときにデフォルトの構築と割り当てを行いますが、STL は配置 new を使用してコピー コンストラクターのみを使用します。また、C++11 STL コンテナーから移動セマンティクスがサポートされていますが、現在の Qt コンテナーはオブジェクトをコピーするだけです。

「大きな」Qt オブジェクトは通常、「デフォルト」の無効な状態を持ち、暗黙の共有セマンティクスを使用するため (したがって、デフォルトの構築、コピー コンストラクター、代入は通常安価です)、多くの Qt オブジェクトにとってこれらはそれほど問題ではありませんが、オブジェクトにはコストのかかるコピーがあります (これは、「完全なコピー」セマンティクスを持つ STL コンテナーの埋め込みに起因する可能性があります)。

また、何らかの方法でプログラムを配布する予定がある場合は、コンテナ クラスだけに Qt のような非常に重い依存関係を導入する価値があるかどうかを検討する必要があります。

于 2013-09-26T15:51:31.167 に答える
1

正しいインクルードを行うと、それらを使用できるはずです!

于 2013-09-26T15:44:54.270 に答える