
Hello, I'm very interested to use multi_index container in my work. But didn't found much documentation and\or examples. Maybe anyone could suggest a place to find it? Basically now I'm trying to implement probably very simple thing. There is basic structure: struct AvNode { CNode* var; int context; MemoryPlace location; ... }; And I'd like to have multi_index container with such nodes (all fields are non-equal). Something like this: typedef multi_index_container< AvNode, indexed_by< ordered_non_unique< tag<varNcontextIndex>, composite_key< AvNode, BOOST_MULTI_INDEX_MEMBER(AvNode,CNode*,var), BOOST_MULTI_INDEX_MEMBER(AvNode,int,context) > >
AvNodeSet;
And then I need to iterate on this container. Better to say that I'd like to group elements in container by first two fields. Could you help me in this problem? In fact I have one solution but it's too large and non-fine: AvNodeSet avNodes; typedef index<AvNodeSet, varNcontextIndex>::type AvNodesSet2VarNcontext; AvNodesSet2VarNcontext& avNodes2VarNcontext = boost::multi_index::get<varNcontextIndex>(avNodes); AvNodesSet2VarNcontext::iterator it = avNodes2VarNcontext.begin(); while(it != avNodes2VarNcontext.end()) { CNode* var = it->var; AvNodesSet2VarNcontext::iterator it2Var = it; while( (it2Var != avNodes2VarNcontext.end()) && (it2Var ->var== var) ) { int context = it2Var->context; FOO(make_pair(var, context)); AvNodesSet2VarNcontext::iterator it2Context = it2Var; while( (it2Context != avNodes2VarNcontext.end()) && (it2Context->context == context) ) { ++it2Context; } it2Var = it2Context; } it = it2Var; } Hope for your help... -- Best regards, Dmitriy Bure mailto:borech@tepkom.ru