|
Boost Users : |
Subject: [Boost-users] help boost multi_index_container + composite key
From: Uthpal Urubail (uthpal.urubail_at_[hidden])
Date: 2011-11-23 06:18:04
All,
I am experimenting boost for some specific requirement.
The following code fails to retrieve the values. Could any one of you
help me find out my mistake with the below code?
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/ordered_index.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/composite_key.hpp>
struct Elem_entry
{
unsigned int faceid;
unsigned int node1;
unsigned int node2;
Elem_entry(const Elem_entry &obj){/*std::cout<<"copy
const"<<std::endl;*/}
Elem_entry():faceid(0),node1(0),node2(0){/*std::cout<<"defa
const"<<std::endl;*/}
Elem_entry(unsigned int faceid, unsigned int node1, unsigned int
node2):
faceid(faceid),node1(node1),node2(node2){}
};
typedef multi_index_container<
Elem_entry,
indexed_by<
//non-unique as some might have more than ids
ordered_unique<
composite_key<
Elem_entry,
member<Elem_entry,unsigned int,&Elem_entry::node1>,
member<Elem_entry,unsigned int,&Elem_entry::node2>
>
>,
ordered_unique<
member<Elem_entry,unsigned int,&Elem_entry::faceid>
>
>
> elementbook;
int main()
{
elementbook pb;
Elem_entry fc1 = Elem_entry(1,1,2);
pb.insert(fc1);
Elem_entry fc2 = Elem_entry(2,2,3);
pb.insert(fc2);
Elem_entry fc3 = Elem_entry(3,3,1);
pb.insert(fc3);
int faceId = 0;
elementbook::iterator it;
//Below code not working
it = pb.find(boost::make_tuple(2,3));
if(it != pb.end())
{
faceId = it->faceid;
bool valid = true;
valid = false;
}
for (elementbook::iterator iter = pb.begin(), i_end = pb.end(); iter
!= i_end;
iter = pb.upper_bound(iter->faceid))
{
std::cout<<iter->faceid<<"\t"<<iter->node1<<"\t"<<iter->node2<<std::endl
;
}
}
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net