Boost.MultiIndex provides a class template named multi_index_container which enables the construction of containers maintaining one or more indices with different sorting and access semantics.
multi_index_container