1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| /* j'ai la flegme d'écrire tous ces espaces de noms :P */
using namespace ::boost;
using namespace ::boost::multi_index;
using namespace std;
struct MyStruct
{
MyStruct(int i, std::string const & s):index(i),str(s){}
int index;
std::string str;
bool operator<(const MyStruct& e)const{return index<e.index;}
};
typedef multi_index_container
<
MyStruct,
indexed_by
<
ordered_unique< identity < MyStruct > >,
ordered_unique
< member < MyStruct, std::string,&MyStruct::str > >
>
> set;
ostream & operator<<(ostream & ofs, MyStruct const & s)
{
ofs<<s.index<<" "<<s.str<<endl;
return ofs;
}
int main()
{
set s;
s.insert(MyStruct(1,"salut"));
s.insert(MyStruct(2,"monde"));
s.insert(MyStruct(3,"world"));
const set::nth_index<0>::type& index=s.get<0>();
const set::nth_index<1>::type& name=s.get<1>();
cout<<"tries par index"<<endl;
std::copy(
index.begin(),index.end(), ostream_iterator<MyStruct>(std::cout));
cout<<"tries par chaine "<<endl;
std::copy(
name.begin(),name.end(), ostream_iterator<MyStruct>(std::cout));
return 0;
} |
Partager