2011-12-07 5 views
2

私はオブジェクトのコレクションを持っています。各オブジェクトは、〜4個のパラメータで記述されます(2つの整数と2つの文字列としましょう)。このコレクションをC++で実装するには、「最初のパラメータが1のすべてのオブジェクトを見つける」、または「2番目のパラメータが「foo」のすべてのオブジェクトを検索する」などの検索基準を指定して、これらのオブジェクトのサブセットをすばやく見つけることができます。 "(ルックアップは常に1つのパラメータのクエリ:parameter=valueを使用して実行されます)。私は4 std::mapsを持っていなければならないので、各パラメータベースの検索はO(logn)で実行されますか?別のパラメータと別のパラメータを追加するとどうなりますか?C++でデータベースのような検索アルゴリズム

この問題の既存の解決策はありますか?

+2

なぜ実際のデータベースを使用しないのですか? SQLiteまたは何か類似?それはあなたの要求に合っていませんか? – Bart

+0

それは常に等しい比較か、不等式やその他のことをしたいですか? – Corbin

+0

@Corbin:常にequalsの比較 –

答えて

0

データ用に1つのインデックス、インデックス用の4つのハッシュテーブル(std::tr1::unordered_map)。

+2

[Boost.MultiIndex](http://www.boost.org/libs/multi_index/)は、それを1つのコンテナにまとめます。 ; - ] – ildjarn