#define BOOST_MULTI_INDEX_CHECK_INVARIANT #include #include #include #include #include #include #include #include #include #include using boost::multi_index_container; using namespace boost::multi_index; struct employee { UINT id; std::string name; UINT32 ssnumber; employee(int _id,const std::string& _name,int _ssnumber): id(_id),name(_name),ssnumber(_ssnumber){} }; struct id{}; struct name{}; struct ssnumber{}; typedef multi_index_container< employee, indexed_by< // sort by employee::operator< ordered_unique,BOOST_MULTI_INDEX_MEMBER(employee,int,id) >, // sort by less on name ordered_non_unique,BOOST_MULTI_INDEX_MEMBER(employee,std::string,name) >, // hashed on ssnumber hashed_non_unique,BOOST_MULTI_INDEX_MEMBER(employee,int,ssnumber) > > > employee_set; typedef boost::multi_index::index::type employee_set_by_ssnumber; typedef boost::multi_index::index::type employee_set_by_id; typedef boost::multi_index::index::type employee_set_by_name; void main() { employee_set es; es.insert(employee(1,"aashit",323)); es.insert(employee(3,"chetan",443)); es.insert(employee(5,"Rajendran",555)); es.insert(employee(10,"Manas",323)); employee_set_by_ssnumber& ssn_index=boost::multi_index::get(es); employee_set_by_ssnumber::iterator i=ssn_index.find(323); std::cout<id<<"\t"<name<<"\t"<ssnumber<(es); employee_set_by_id::iterator & j=id_index.find(3); if(j!=id_index.end()) std::cout<id<<"\t"<name<<"\t"<ssnumber<