STLマルチセット、マップ、およびハッシュマップクラスのBig O表記の複雑さを知りたいのは、次の場合です。
これらは red-black tree 、 balanced binary search tree のタイプを使用して実装されます。次の漸近的な実行時間があります。
挿入:O(log n)
ルックアップ:O(log n)
削除:O(log n)
これらは hash tables を使用して実装されます。次のランタイムがあります。
挿入:O(1)予想、O(n)最悪の場合
ルックアップ:O(1) expected、O(n)最悪の場合
削除:O(1) expected、O(n)最悪の場合
適切なハッシュ関数を使用する場合、最悪の場合の動作はほとんど見られませんが、覚えておく必要があります。例については、CrosbyおよびWallachによる アルゴリズムの複雑性攻撃によるサービス拒否 を参照してくださいその。
この情報は、SGI STLドキュメントで見つけることができます。 http://www.sgi.com/tech/stl/
基本的に、マルチセットとマップはどちらもバイナリツリーでソートされるため、Nエントリのうち1エントリを挿入/検索するにはO(log N)が必要です。ソート済み連想を参照してください。ドキュメント内のコンテナ。
明らかに、Hashmapの大きな利点は、エントリを挿入および検索するためのO(1)です。
見つかった後にアクセスするには、O(1)すべての構造に対して。比較、それはどういう意味ですか?O(1)すべてが見つかりました。