doc_custom_tree.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. #include <boost/container/detail/config_begin.hpp>
  11. #include <boost/container/detail/workaround.hpp>
  12. //[doc_custom_tree
  13. #include <boost/container/set.hpp>
  14. //Make sure assertions are active
  15. #ifdef NDEBUG
  16. #undef NDEBUG
  17. #endif
  18. #include <cassert>
  19. int main ()
  20. {
  21. using namespace boost::container;
  22. //First define several options
  23. //
  24. //This option specifies an AVL tree based associative container
  25. typedef tree_assoc_options< tree_type<avl_tree> >::type AVLTree;
  26. //This option specifies an AVL tree based associative container
  27. //disabling node size optimization.
  28. typedef tree_assoc_options< tree_type<avl_tree>
  29. , optimize_size<false> >::type AVLTreeNoSizeOpt;
  30. //This option specifies an Splay tree based associative container
  31. typedef tree_assoc_options< tree_type<splay_tree> >::type SplayTree;
  32. //Now define new tree-based associative containers
  33. //
  34. //AVLTree based set container
  35. typedef set<int, std::less<int>, std::allocator<int>, AVLTree> AvlSet;
  36. //AVLTree based set container without size optimization
  37. typedef set<int, std::less<int>, std::allocator<int>, AVLTreeNoSizeOpt> AvlSetNoSizeOpt;
  38. //Splay tree based multiset container
  39. typedef multiset<int, std::less<int>, std::allocator<int>, SplayTree> SplayMultiset;
  40. //Use them
  41. //
  42. AvlSet avl_set;
  43. avl_set.insert(0);
  44. assert(avl_set.find(0) != avl_set.end());
  45. AvlSetNoSizeOpt avl_set_no_szopt;
  46. avl_set_no_szopt.insert(1);
  47. avl_set_no_szopt.insert(1);
  48. assert(avl_set_no_szopt.count(1) == 1);
  49. SplayMultiset splay_mset;
  50. splay_mset.insert(2);
  51. splay_mset.insert(2);
  52. assert(splay_mset.count(2) == 2);
  53. return 0;
  54. }
  55. //]
  56. #include <boost/container/detail/config_end.hpp>