2010-06-10 6 views
1

내가 검색하고 부스트의 남자를 검색했지만 예제를 찾지 못했습니다. 어쨌든 어리석은 질문일지도 모릅니다.composite_key를 사용하여 multi_index_containder에 대한 사용자 정의 조건부를 작성하는 방법은 무엇입니까?

typedef multi_index_container< 
    phonebook_entry, 
    indexed_by< 
    ordered_non_unique< 
     composite_key< 
     phonebook_entry, 
     member<phonebook_entry,std::string,&phonebook_entry::family_name>, 
     member<phonebook_entry,std::string,&phonebook_entry::given_name> 
     >, 
     composite_key_compare< 
     std::less<std::string>, // family names sorted as by default 
     std::greater<std::string> // given names reversed 
     > 
    >, 
    ordered_unique< 
     member<phonebook_entry,std::string,&phonebook_entry::phone_number> 
    > 
    > 
> phonebook; 


phonebook pb; 
... 
// look for all Whites 
std::pair<phonebook::iterator,phonebook::iterator> p= 
    pb.equal_range(boost::make_tuple("White"), my_custom_comp()); 

하는 방법 (my_custom_comp한다) 모양 :

그래서 우리는 사람에서 유명한 전화 번호부가? 내 말은 분명하다. (컴파일 오류로 인해) argumen으로 boost::multi_index::composite_key_result<CompositeKey>이 걸린다. 그렇지만 특정 경우에 CompositeKey는 무엇인가?

struct my_custom_comp 
{ 
    bool operator()(?? boost::multi_index::composite_key_result<CompositeKey> ??) const 
    { 
     return blah_blah_blah; 
    } 
}; 

미리 감사드립니다.

답변

2

composite_key_compare과 같아야합니다. 귀하의 경우 (템플릿이 아닌 버전)의 경우 : - 위의 예에서

typedef composite_key< 
    phonebook_entry, 
    member<phonebook_entry,std::string,&phonebook_entry::family_name>, 
    member<phonebook_entry,std::string,&phonebook_entry::given_name> 
    > my_comp_type_t; 

struct my_custom_comp 
{ 
    bool operator()( 
     const boost::tuple<const char*>& x, 
     const boost::multi_index::composite_key_result<my_comp_type_t>& y) const 
    { 
     return false; // should return something instead of false 
    } 
    bool operator()( 
     const boost::multi_index::composite_key_result<my_comp_type_t>& y, 
     const boost::tuple<const char*>& x) const 
    { 
     return false; // should return something instead of false 
    } 
}; 
+0

당신은 CompositeKey (composite_key_result 여기에 사용) 유형이 무엇인지 지적시겠습니까? 답변에 감사드립니다. – Titan

+0

'CompositeKey'는 템플릿 인수입니다. 내 대답에 링크를 확인하십시오. –

+0

대단히 감사합니다 :) – Titan

관련 문제