2013-06-17 5 views
2

나는 다음과 같은 데이터를 부스트 :: multi_index를 사용하여 검색 :는 SQL :: multi_index

sample_set::index<my_indx>::type::iterator s, end; 
boost::tie(s,end) = samples.get<my_indx>().equal_range(
    boost::make_tuple("Dress", "Red")); 

이 코드는 모두 빨간 드레스를 검색합니다. 하나의 검색어로 빨간색과 노란색 드레스를 검색 할 수있는 방법이 있습니까? 마찬가지로 SQL에서 :

하나의 동작에 있음을 수행하는 방법은 없습니다
"Select * from clothes where type = 'Dress' and color in ('Red', 'Yellow')" 
+1

composite_key_compare와 직접 비교할 수 있습니다. http://www.boost.org/doc/libs/1_53_0/libs/multi_index/doc/reference/key_extraction.html#composite_key_compare –

답변

3

: Boost.MultiIndex 조회 멤버 함수는 항상 범위 반환 (또는 반복자를, 그 하나 요소의 범위로 생각 될 수있다)이 있지만, 설명하는 쿼리의 결과는 범위가 아닙니다. 즉, 요소가 반드시 인접하지는 않습니다. 따라서 "Dress", "Red"에 대한 쿼리와 "Dress", "Yellow"에 대한 쿼리의 두 가지 쿼리를 수행 한 다음 두 결과 범위를 순차적으로 통과해야합니다.

+0

컨테이너를 필터링 할 수 있습니까? 부스트 범위가 필터링 된 (인덱싱 된 범위)? http://www.boost.org/doc/libs/1_49_0/libs/range/doc/html/range/reference/adaptors/reference/filtered.html – alfC