잠시 동안 데이터 구조 문제를 숙고했지만 좋은 해결책이 떠오를 것으로 보입니다. 나는 해결책이 간단하다는 느낌을 떨쳐 낼 수 없다. 그러나 나는 단지 그것을 보지 않고있다. 그러나 잘하면 너희들이 도울 수있다!C++의 계층 적 필터링 된 조회
다음과 같은 문제가 있습니다. 메모리에 많은 개체 모음이 있습니다. 각각에는 여러 개의 데이터 필드가 있습니다. ID와 같은 일부 데이터 필드는 각 개체마다 고유하지만 이름과 같은 다른 개체는 여러 개체에 나타날 수 있습니다.
class Object {
size_t id;
std::string name;
Histogram histogram;
Type type;
...
};
나는 나를 빨리 (개체의 수는 상대적으로 큰 경우에도, 즉 수백만) 개체 구성원의 임의의 수 동안의 사양 주어진 컬렉션을 필터링 할 수있는 방법으로 이러한 개체를 구성 할 필요가 미 규정으로 남겨진 모든 회원은 와일드 카드로 간주됩니다. 예를 들어 주어진 name
을 지정하면 이름 구성원이 주어진 이름과 동일한 모든 개체를 검색하려고합니다. 그러나 쿼리에 히스토그램을 추가하면 쿼리가 name
및 histogram
필드에서 일치하는 개체 만 반환하도록하고 싶습니다. 따라서, 예를 들어, 나는 두 번째 호출이 반환 곳
retrieve(42, WILDCARD, WILDCARD, WILDCARD)
뿐만 아니라
retrieve(42, WILDCARD, WILDCARD, Type_foo)
을 할 수있는 기능을
std::set<Object*> retrieve(size_t, std::string, Histogram, Type)
싶습니다 적거나 동등하게 많은 첫 번째 개체로 어떤 데이터 구조가 이와 같은 쿼리를 허용하며 수백만의 개체 수에 대해 합리적인 시간에 작성되고 쿼리 될 수 있습니까?
도움 주셔서 감사합니다.