Hi, I defined a container like this: typedef boost::multi_index_container< std::pair<int, int>, boost::multi_index::indexed_by< boost::multi_index::random_access<>, boost::multi_index::ordered_unique< boost::multi_index::member<std::pair<int, int>, int, &std::pair<int, int>::first> > > > IdContainer; typedef IdContainer::nth_index<0>::type IdsArr; typedef IdContainer::nth_index<1>::type IdsSet; and then I insert a data into it: a_set.insert(std::make_pair(1, 0)); a_set.insert(std::make_pair(3, 0)); a_set.insert(std::make_pair(2, 0)); a_set.insert(std::make_pair(5, 0)); a_set.insert(std::make_pair(4, 0)); in this case elements will be “pushed back” in terms of random access index, i. e. for (size_t i = 0; i < a_arr.size(); i++) { std::cout << a_arr[i].first << std::endl; } will return 1 3 2 5 4 I would like to have them inserted ordered way, and as long as we have ordered index I suppose it’s possible. How can I do that? I suspect I could do like this: a_arr.insert(a_set.find(1), std::make_pair(1, 0)); but it errors about incompatible types of iterators for what a_set.find returns and what a_arr.insert accepts. Or… may be there are some kind of definition of random access index with respect to another index which is ordered??? I don’t know. Your help is appreciated.