#include #include #include #include #include #include struct record { record(const std::string& domain,const std::string& path): domain(domain),path(path) {} std::string domain; std::string path; }; struct reverse_str_less { bool operator()(const std::string& x,const std::string& y)const { return std::lexicographical_compare( x.rbegin(),x.rend(),y.rbegin(),y.rend()); } }; using namespace boost::multi_index; typedef multi_index_container< record, indexed_by< ordered_unique< composite_key< record, member, member >, composite_key_compare< reverse_str_less, std::less > > > > multi_index_t; int main() { multi_index_t m; m.insert(record("google.com","/abc")); }