- Boost Container provides additional advantages:
- (1) The interface of the containers resemble those of the containers in the C++11 standard library.
- (2) With boost::container::slist or boost::container::stable_vector, Boost container offers containers the standard library doesn't provide.
(3) The implementation is platform independent.
- (4) The containers from Boost Container support incomplete types and can be used to define recursive containers.
- #include <boost/container/stable_vector.hpp>
- #include <iostream>
- using namespace boost::container;
- int main() {
- stable_vector<int> v(2, 1);
- int& i = v[1];
- v.erase(v.begin());
- std::cout << i << std::endl;
- return 0;
- }
输出: 1
boost::container::stable_vector behaves similarly to std::vector, except that if boost::container::stable_vector is changed, all iterators and references to existing elements remain valid. This is possible because elements aren't stored contiguously in boost::container::stable_vector. It is still possible to access elements with an index even though elements are not stored next to each other in memory.
Additional containers provided by Boost Container are boost::container::flat_set, boost::container::flat_map, boost::container_slist, boost::container::static_vector.
boost::container::static_vector stores elements like std::array directly in the container. Like std::array, the container has a constant capacity. The capacity is conastant, but can be changed with resize(). push_back() doesn't change the capacity, throws an exception of type std::bad_alloc.
来源: http://www.bubuko.com/infodetail-3097143.html