죄송합니다. 제목에 더 구체적으로 답할 수 없습니다.부스트 Multi_Index 질문
의 내가 클래스 푸에게
class Foo {
public:
Foo() { m_bitset.reset(); }
void set_i(int i) {
m_bitset.set(1);
m_i = i;
}
void set_j(int j) {
m_bitset.set(2);
m_j = j;
}
bool i_set() { return m_bitset(1); }
bool j_set() { return m_bitset(2); }
void clear_i() { m_bitset.reset(1); }
void clear_j() { m_bitset.reset(2); }
int get_i() {
assert(i_set());
return m_i;
}
int get_j() {
assert(j_set());
return m_j;
}
private:
int m_i, m_j;
bitset<2> m_bitset;
};
이 그리고 지금은 푸의가 multi_index에 투입하기를 원하는 경우를 생각 해보자.
typedef multi_index_container <
Foo,
indexed_by<
ordered_non_unique<BOOST_MULTI_INDEX_CONST_MEM_FUN(Foo, int, get_i)
>,
ordered_non_unique<BOOST_MULTI_INDEX_CONST_MEM_FUN(Foo, int, get_j)
>
>
> Foo_set;
은 내가 알아 내기 위해 노력하고하는 것은 composite_key의 경우 I 또는 J (또는 둘 다의 유효한 값을 가지고 푸의 나머지를 건너 내 multi_index 종류가하는 방법입니다. 그래서 난 그냥 단지 내가 유효 값이 FOOS을 반환하려면, 아래의 코드를 폭파하고 싶지 않아요.
for (Foo_set::nth_index<1>::type::iterator it = foos.get<1>().begin(); it != foos.get<1>().end(); ++it)
cout << *it;
예, 'boost :: optional'을 사용하여 색인을 생성 할 수 있어야합니다. – alfC