2012-04-20 18 views
1

QtSTLcontainers.Qtコンテナ - 選択してください。

のセットを提供していますが、店はいくつかの理由のために彼らのため(のようなstd::setQSetて値を注文した利用可能なコンテナが、存在しないstd::unordered_setのように振る舞います。おそらくO(1)という名前の "セット"データ構造のルックアップは素晴らしいことかもしれませんが、なぜこの決定がなされたのか理解できません。コンテナは、私が注文したアイテムのコレクションを保存するために使用すべき

、なぜstd::setなどのないQtのオファー何かをする(私は架空の値を持つQMapは非常にお粗末な選択であると思われますか)?

私はこの背後にいくつかの技術的な理由があると思いますが、残念ながら、私は考えられません。

ウィキペディアから
+8

もし 'std :: set'のようなものが必要なら、なぜ使いませんか?' std:set'? –

+0

'std :: set'を使うことができます。QtのコンテナはC++標準ライブラリを完全に反映するようには設計されておらず、マルチセットや単方向のリンクリストがないことにも注意してください。 – birryree

+0

@birryreeまあ、私は 'STL'と' Qt'コンテナを1つのプロジェクトに混ぜるつもりはありません。それらは実装の詳細(例えばコピーオンライト)と 'Qt'コンテナが実際に' 'STL'をミラーリングしようとする異なる実装を持っています。この種の互換性を提供するために、 'STL'のようなインターフェース(' push_back'と 'append')を含んでいます。 –

答えて

3

HaavardノールとEirik Chambe-工学(Qtののオリジナル開発者兼最高経営責任者(CEO)兼社長は、それぞれ、Trolltechのでは)1991

に "Qtの" の開発を開始しました

はまた、ウィキペディアから、STLについて:

ベル研究所のアンドリュー・ケーニッヒは仕事の気づきとの1993年11月の会議での主なアイデアを提示するステパノフを求めていませんでしたC++標準化のためのANSI/ISO委員会委員会の対応は圧倒的に好意的であり、1994年3月の会合に向けて正式な提案を求めるKoenigの要請につながった。多大な時間がかかるにもかかわらず、アレックスと孟は、その会議で事前承認を得た案を作成することができました。

と人間自身から:

「私は頻繁に私は私の最大の過ち大きな標準ライブラリを出荷しませ検討し、言ったように。」 - Bjarne Stroustrup

Qtは独立して開発されました。だからそうなるのです。 QMapを使用し、あなたの人生で動いてください。 :)

(注意:Qtの中順不同のマップがあり、それはQHashと呼ばれています)

あなたが値スロットに入れて便利か面白いことを考えることができない場合は、あなたのプログラムは、おそらくです大騒ぎになるほど複雑ではありません。キーオブジェクトには、マップ内の値を簡単に作成できるデータメンバーがありますか?あなたは本当にそこに置く何かを考えることはできませんか?

エントリごとにcharを無駄に使い果たしてしまったら、実際のシステムのボトルネックは本当ですか?これを証明している指標がありますか?等。

+2

ちなみに、私はpre-STLを使った他のクラスライブラリから、 "set"という単語は "順序付けられていない"と同義であり、一般的に再ハッシュを償却するハッシュテーブルのサイズ変更で実装されています。だから私は 'std :: set'に順序があることに非常に驚いていました。 (何かが順序どおりにならないと期待していて、 'std :: ordered_set'という名前の"例外 "クラスであることが予想されていました。 – HostileFork

関連する問題