File: demo1.cpp

package info (click to toggle)
boost1.74 1.74.0%2Bds1-21
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 463,588 kB
  • sloc: cpp: 3,338,117; xml: 131,293; python: 33,088; ansic: 14,292; asm: 4,038; sh: 3,353; makefile: 1,193; perl: 1,036; yacc: 478; php: 212; ruby: 102; lisp: 24; sql: 13; csh: 6
file content (55 lines) | stat: -rw-r--r-- 1,647 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// https://www.boost.org/doc/libs/1_67_0/doc/html/container/configurable_containers.html
#include <boost/container/set.hpp>

//Make sure assertions are active
#ifdef NDEBUG
#undef NDEBUG
#endif
#include <cassert>

int main()
{
    using namespace boost::container;

    //First define several options
    //

    //This option specifies an AVL tree based associative container
    typedef tree_assoc_options<tree_type<avl_tree>>::type AVLTree;

    //This option specifies an AVL tree based associative container
    //disabling node size optimization.
    typedef tree_assoc_options<tree_type<avl_tree>, optimize_size<false>>::type AVLTreeNoSizeOpt;

    //This option specifies an Splay tree based associative container
    typedef tree_assoc_options<tree_type<splay_tree>>::type SplayTree;

    //Now define new tree-based associative containers
    //

    //AVLTree based set container
    typedef set<int, std::less<int>, std::allocator<int>, AVLTree> AvlSet;

    //AVLTree based set container without size optimization
    typedef set<int, std::less<int>, std::allocator<int>, AVLTreeNoSizeOpt> AvlSetNoSizeOpt;

    //Splay tree based multiset container
    typedef multiset<int, std::less<int>, std::allocator<int>, SplayTree> SplayMultiset;

    //Use them
    //
    AvlSet avl_set;
    avl_set.insert(0);
    assert(avl_set.find(0) != avl_set.end());

    AvlSetNoSizeOpt avl_set_no_szopt;
    avl_set_no_szopt.insert(1);
    avl_set_no_szopt.insert(1);
    assert(avl_set_no_szopt.count(1) == 1);

    SplayMultiset splay_mset;
    splay_mset.insert(2);
    splay_mset.insert(2);
    assert(splay_mset.count(2) == 2);
    return 0;
}