我一直在琢磨数据结构问题一段时间,但似乎无法提出一个好的解决方案。我不能摆脱这种解决方案很简单的感觉,但我只是没有看到它,所以希望你们能够帮助!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)
其中第二通话将返回较少或一样地多对象作为第一个。哪种数据结构允许像这样的查询,并且可以在合理的时间内为数百万的对象计数构建和查询?
感谢您的帮助!