我有一個對象集合。每個對象由〜4個參數描述(比方說兩個整數和兩個字符串)。我怎樣才能在C++中實現這個集合,以便能夠通過指定搜索標準快速找到這些對象的子集,即「查找所有第一個參數等於1的對象」,或者「搜索所有第二個參數等於'foo'的對象」 「(查找始終使用單參數查詢執行:parameter=value
)。我應該有4 std::maps
,以便在O(logn)
中執行每個基於參數的查找?如果我添加另一個參數又如何?C++中的數據庫式搜索算法
這個問題是否有任何現有的解決方案?
我有一個對象集合。每個對象由〜4個參數描述(比方說兩個整數和兩個字符串)。我怎樣才能在C++中實現這個集合,以便能夠通過指定搜索標準快速找到這些對象的子集,即「查找所有第一個參數等於1的對象」,或者「搜索所有第二個參數等於'foo'的對象」 「(查找始終使用單參數查詢執行:parameter=value
)。我應該有4 std::maps
,以便在O(logn)
中執行每個基於參數的查找?如果我添加另一個參數又如何?C++中的數據庫式搜索算法
這個問題是否有任何現有的解決方案?
你應該試試Boost Multi Index,這是爲了這種事情。
一個用於數據的數組,四個散列表(std::tr1::unordered_map
)用於索引。
[Boost.MultiIndex](http://www.boost.org/libs/multi_index/)會將它包裝到一個容器中。 ; - ] – ildjarn
爲什麼不使用實際的數據庫? SQLite或類似的東西?這不符合你的要求嗎? – Bart
它會永遠是等於比較還是你想做不平等和什麼? – Corbin
@Corbin:總是等於比較 –