[解決済み] STLとQtのコンテナ?
2022-04-30 08:14:05
質問
Qtコンテナ(
QMap
,
QVector
など)をSTLの同等品と比較することはできますか?
Qtを好む理由は1つありますね。
-
Qtのコンテナは、Qtの他の部分に渡すことができます。例えば、それらは
QVariant
を追加し、さらにQSettings
(ただし、いくつかの制限付きでQList
とQMap
/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の実装やどのような最適化を行っているかなど、より詳細な情報を提供しています。
関連
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み] C++コンテナにおけるイテレータの無効化ルール
-
[解決済み] STL」と「C++ Standard Library」の違いは?
-
[解決済み] なぜC++ STLは "ツリー "コンテナを提供しないのですか?
-
[解決済み】STLにおけるvectorとlistの比較
-
[解決済み】STLのdequeって実際どうなの?
-
[解決済み】C++のSTLはなぜテンプレートに大きく依存しているのですか?(そして*インターフェイス*にはない)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++