我一直在琢磨數據結構問題一段時間,但似乎無法提出一個好的解決方案。我不能擺脫這種解決方案很簡單的感覺,但我只是沒有看到它,所以希望你們能夠幫助!C++中的分層過濾查找
這是問題:我在內存中有大量對象集合。他們每個人都有一些數據字段。某些數據字段(如ID)對於每個對象都是唯一的,但其他字段(如名稱)可以出現在多個對象中。
class Object {
size_t id;
std::string name;
Histogram histogram;
Type type;
...
};
我需要的方式,可以讓我快速(即使對象的數量是比較大的,也就是百萬)過濾收集給定對象的成員,而任意數量的規範來組織這些對象所有未指定的成員都算作通配符。例如,如果我指定給定的name
,我想檢索名稱成員等於給定名稱的所有對象。但是,如果向查詢添加直方圖,我希望該查詢僅返回name
和histogram
字段中匹配的對象,依此類推。因此,舉例來說,我想一個函數
std::set<Object*> retrieve(size_t, std::string, Histogram, Type)
既能做
retrieve(42, WILDCARD, WILDCARD, WILDCARD)
以及
retrieve(42, WILDCARD, WILDCARD, Type_foo)
其中第二通話將返回較少或一樣地多對象作爲第一個。哪種數據結構允許像這樣的查詢,並且可以在合理的時間內爲數百萬的對象計數構建和查詢?
感謝您的幫助!