Copyright © 2005 Olaf Krzikalla, 2006-2007 Ion Gaztañaga
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Table of Contents
- Introduction
- Intrusive and non-intrusive containers
- How to use Boost.Intrusive
- When to use?
- Concept summary
- Presenting Boost.Intrusive containers
- Safe hooks
- Auto-unlink hooks
- Intrusive singly linked list: slist
- Intrusive doubly linked list: list
- Intrusive associative containers: set, multiset, rbtree
- Pseudo-Intrusive unordered associative containers: unordered_set, unordered_multiset
- Intrusive splay tree based associative containers: splay_set, splay_multiset and , splay_tree
- Intrusive avl tree based associative containers: avl_set, avl_multiset and avltree
- Intrusive scapegoat tree based associative containers: sg_set, sg_multiset and sgtree
- Advanced lookup and insertion functions for associative containers
- Erasing and disposing values from Boost.Intrusive containers
- Cloning Boost.Intrusive containers
- Using smart pointers with Boost.Intrusive containers
- Obtaining iterators from values
- Concepts explained
- Node algorithms with custom NodeTraits
- Containers with custom ValueTraits
- Thread safety guarantees
- Obtaining the same types and reducing symbol length
- Design Notes
- Performance
- Disabling exceptions support
- Tested compilers
- References
- Acknowledgements
- Reference
- Header <boost/intrusive/avl_set.hpp>
- Header <boost/intrusive/avl_set_hook.hpp>
- Header <boost/intrusive/avltree.hpp>
- Header <boost/intrusive/avltree_algorithms.hpp>
- Header <boost/intrusive/bs_set_hook.hpp>
- Header <boost/intrusive/circular_list_algorithms.hpp>
- Header <boost/intrusive/circular_slist_algorithms.hpp>
- Header <boost/intrusive/derivation_value_traits.hpp>
- Header <boost/intrusive/hashtable.hpp>
- Header <boost/intrusive/linear_slist_algorithms.hpp>
- Header <boost/intrusive/link_mode.hpp>
- Header <boost/intrusive/list.hpp>
- Header <boost/intrusive/list_hook.hpp>
- Header <boost/intrusive/member_value_traits.hpp>
- Header <boost/intrusive/options.hpp>
- Header <boost/intrusive/pointer_plus_2_bits.hpp>
- Header <boost/intrusive/pointer_plus_bit.hpp>
- Header <boost/intrusive/rbtree.hpp>
- Header <boost/intrusive/rbtree_algorithms.hpp>
- Header <boost/intrusive/set.hpp>
- Header <boost/intrusive/set_hook.hpp>
- Header <boost/intrusive/sg_set.hpp>
- Header <boost/intrusive/sgtree.hpp>
- Header <boost/intrusive/sgtree_algorithms.hpp>
- Header <boost/intrusive/slist.hpp>
- Header <boost/intrusive/slist_hook.hpp>
- Header <boost/intrusive/splay_set.hpp>
- Header <boost/intrusive/splay_set_hook.hpp>
- Header <boost/intrusive/splaytree.hpp>
- Header <boost/intrusive/splaytree_algorithms.hpp>
- Header <boost/intrusive/trivial_value_traits.hpp>
- Header <boost/intrusive/unordered_set.hpp>
- Header <boost/intrusive/unordered_set_hook.hpp>
- License notices
Boost.Intrusive is a library presenting some intrusive containers to the world of C++. Intrusive containers are special containers that offer better performance and exception safety guarantees than non-intrusive containers (like STL containers).
The performance benefits of intrusive containers makes them ideal as a building block to efficiently construct complex containers like multi-index containers or to design high performance code like memory allocation algorithms.
While intrusive containers were and are widely used in C, they became more and more forgotten in C++ due to the presence of the standard containers which don't support intrusive techniques.Boost.Intrusive not only reintroduces this technique to C++, but also encapsulates the implementation in STL-like interfaces. Hence anyone familiar with standard containers can easily use Boost.Intrusive.
There is no need to compile anything to use Boost.Intrusive, since it's a header only library. Just include your Boost header directory in your compiler include path.
Last revised: March 28, 2008 at 08:12:09 GMT |
