Search code examples
performanceboostcontainersboost-interprocessboost-multi-index

Boost Container vs Boost multi_index_container


What are the advantages of the boost::container class compared to boost::multi_index_container one?

They can both store their data in shared memory and work with Boost.Interprocess (crucial for me), and multi_index_container seems to provide more advanced functionality.

What features of container are missing from multi_index_container?

References: http://www.boost.org/doc/libs/1_61_0/libs/multi_index/doc/tutorial/creation.html#special_allocator http://www.boost.org/doc/libs/1_61_0/doc/html/container.html


Solution

  • Boost.Container is not a single class but rather a collection of containers with various interfaces (though all of them based on STL conventions) and internal data structures, so a feature comparison with Boost.MultiIndex's multi_index_container really depends on what particular container you're interested in. Anyway, all of the containers in Boost.Container and multi_index_container can be placed in shared memory with Boost.Interprocess, but if this is the only non-standard feature you look for I guess you probably want to stick with boost::container::set or similar.