1. ホーム
  2. c++

[解決済み] STLとQtのコンテナ?

2022-04-30 08:14:05

質問

Qtコンテナ( QMap , QVector など)をSTLの同等品と比較することはできますか?

Qtを好む理由は1つありますね。

  • Qtのコンテナは、Qtの他の部分に渡すことができます。例えば、それらは QVariant を追加し、さらに QSettings (ただし、いくつかの制限付きで QListQMap / QHash 文字列をキーとするものも受け付ける)。

他に何かありますか?

編集 : アプリケーションがすでにQtに依存していると仮定して。

解決方法は?

私は、まず std::(w)string とSTLコンテナのみを使用し、Qtの同等品との間で変換していましたが、すでに QString と、Qtのコンテナを使うことが多くなっていることに気づきました。

文字列に関して言えば QString と比較して、より完全な機能を提供します。 std::basic_string であり、かつ 完全にUnicodeを意識しています。また 効率的なCOWの実装 これは、私が非常に頼りにしているものです。

Qtのコンテナ。

  • と同じCOWの実装を提供します。 QString これは、Qt の foreach マクロ (コピーを行う) と、メタタイプやシグナル、スロットを使用する場合です。
  • STL形式のイテレータやJava形式のイテレータを使用することができる
  • でストリーミング可能です。 QDataStream
  • は、Qt の API で広く使用されています。
  • オペレーティングシステムを問わず、安定した実装が可能です。STLの実装はC++標準に従わなければなりませんが は、それ以外は自由に行うことができます ( std::string COW論争)。STLの実装の中には、特に が悪い。
  • TR1でなければ利用できないハッシュを提供する。

QTLはSTLとは異なる思想を持っており、それは よくまとまっている J. Blanchette 氏によると、"STL のコンテナは生の速度に最適化されているのに対し、Qt のコンテナクラスは利便性、最小限のメモリ使用、最小限のコード拡張を提供するよう慎重に設計されています"。

上記リンク先では、QTLの実装やどのような最適化を行っているかなど、より詳細な情報を提供しています。