I'm using a Boost multi_index container to store objects according to 2 integer keys K1 and K2. I can easily retrieve an iterator over all elements satisfying "K1 == X", for instance, by taking the first index and using the find() function (idem for K2 and a value Y), but I'm looking for a way to get an iterator over all elements satisfying both K1 == X and K2 == Y. An obvious solution is to get an iterator over all elements satisfying K1 == X then build a boost::filter_iterator with the predicate K2 == Y, but is there a way to do that (maybe more efficiently) only from Boost.MultiIndex?
Thanks
Matthieu
You can use a boost::multi_index::composite_key with both
K1
andK2
.Here a small example, which is also on ideone.com: