1//////////////////////////////////////////////////////////////////////////////
2//
3// (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
4// Software License, Version 1.0. (See accompanying file
5// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6//
7// See http://www.boost.org/libs/container for documentation.
8//
9//////////////////////////////////////////////////////////////////////////////
10//[doc_custom_tree
11#include <boost/container/set.hpp>
12
13//Make sure assertions are active
14#ifdef NDEBUG
15#undef NDEBUG
16#endif
17#include <cassert>
18
19int main ()
20{
21 using namespace boost::container;
22
23 //First define several options
24 //
25
26 //This option specifies an AVL tree based associative container
27 typedef tree_assoc_options< tree_type<avl_tree> >::type AVLTree;
28
29 //This option specifies an AVL tree based associative container
30 //disabling node size optimization.
31 typedef tree_assoc_options< tree_type<avl_tree>
32 , optimize_size<false> >::type AVLTreeNoSizeOpt;
33
34 //This option specifies an Splay tree based associative container
35 typedef tree_assoc_options< tree_type<splay_tree> >::type SplayTree;
36
37 //Now define new tree-based associative containers
38 //
39
40 //AVLTree based set container
41 typedef set<int, std::less<int>, new_allocator<int>, AVLTree> AvlSet;
42
43 //AVLTree based set container without size optimization
44 typedef set<int, std::less<int>, new_allocator<int>, AVLTreeNoSizeOpt> AvlSetNoSizeOpt;
45
46 //Splay tree based multiset container
47 typedef multiset<int, std::less<int>, new_allocator<int>, SplayTree> SplayMultiset;
48
49 //Use them
50 //
51 AvlSet avl_set;
52 avl_set.insert(x: 0);
53 assert(avl_set.find(0) != avl_set.end());
54
55 AvlSetNoSizeOpt avl_set_no_szopt;
56 avl_set_no_szopt.insert(x: 1);
57 avl_set_no_szopt.insert(x: 1);
58 assert(avl_set_no_szopt.count(1) == 1);
59
60 SplayMultiset splay_mset;
61 splay_mset.insert(x: 2);
62 splay_mset.insert(x: 2);
63 assert(splay_mset.count(2) == 2);
64 return 0;
65}
66//]
67

source code of boost/libs/container/example/doc_custom_tree.cpp