2

私は、おそらく異なるキーを使用して、直接アドレステーブルを設計することを含む練習問題に取り組んでいます。制約は、INSERT、DELETE、およびSEARCHがO(1)時間で実行される必要があるということです。引数は、オブジェクトを設定するためのポインタです。

明らかな解決策の1つは、連鎖を使用することです。テーブルエントリは、リンクリストの先頭(NULLの場合もあります)を指します。このような連鎖を使用すると、INSERTとDELETEは確実にO(1)時間で実行されますが、SEARCHは実行されません...提案をいただければ幸いです。

4

1 に答える 1

1

{unique、non-unique}と{keys、key-values}を格納するかどうかに応じて、STL連想コンテナstd :: unordered_setstd:unordered_mapstd :: unordered_multisetstd::unorderd_multimapの設計を検討します。C ++ 11コンパイラがない場合(たとえば、MSVC ++>=2010またはgcc>=4.4)、Boost.Unorderedを使用できます。

更新: 特にCライブラリを探している場合:http://attractivechaos.wordpress.com/2008/09/02/implementing-generic-hash-library-in-c/をご覧ください。

于 2012-05-04T14:18:37.037 に答える