]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/ptr_container/doc/ptr_multiset_adapter.rst
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / ptr_container / doc / ptr_multiset_adapter.rst
1 ++++++++++++++++++++++++++++++++++
2 |Boost| Pointer Container Library
3 ++++++++++++++++++++++++++++++++++
4
5 .. |Boost| image:: boost.png
6
7 Class ``ptr_multiset_adapter``
8 ------------------------------
9
10 This class is used to build custom pointer containers with
11 an underlying multiset-like container. The interface of the class is an extension
12 of the interface from ``associative_ptr_container``.
13
14 **Hierarchy:**
15
16 - `reversible_ptr_container <reversible_ptr_container.html>`_
17
18 - `associative_ptr_container <associative_ptr_container.html>`_
19
20 - `ptr_set_adapter <ptr_set_adapter.html>`_
21 - ``ptr_multiset_adapter``
22 - `ptr_map_adapter <ptr_map_adapter.html>`_
23 - `ptr_multi_map_adapter <ptr_multimap_adapter.html>`_
24
25 - `ptr_set <ptr_set.html>`_
26 - `ptr_multi_set <ptr_multiset.html>`_
27 - `ptr_map <ptr_map.html>`_
28 - `ptr_multimap <ptr_multimap.html>`_
29
30 **Navigate:**
31
32 - `home <ptr_container.html>`_
33 - `reference <reference.html>`_
34
35 **Synopsis:**
36
37 .. parsed-literal::
38
39
40 namespace boost
41 {
42 template
43 <
44 class Key,
45 class VoidPtrMultiSet,
46 class CloneAllocator = heap_clone_allocator
47 >
48 class ptr_multiset_adapter
49 {
50
51 public: // `modifiers`_
52 iterator insert( Key* x );
53 template< class Key2 >
54 iterator insert( std::auto_ptr<Key2> x );
55
56 public: // `pointer container requirements`_
57 void transfer( iterator object, ptr_multiset_adapter& from );
58 size_type transfer( iterator first, iterator last, ptr_multiset_adapter& from );
59 template< class Range >
60 size_type transfer( const Range& r, ptr_multiset_adapter& from );
61 void transfer( ptr_multiset_adapter& from );
62
63 }; // class 'ptr_multiset_adapter'
64
65 } // namespace 'boost'
66
67
68 Semantics
69 ---------
70
71 .. _`modifiers`:
72
73 Semantics: modifiers
74 ^^^^^^^^^^^^^^^^^^^^
75
76 - ``iterator insert( key_type* x );``
77
78 - Requirements: ``x != 0``
79
80 - Effects: Takes ownership of ``x``. The returned iterator points to the element with key ``x``.
81
82 - Throws: bad_pointer if ``x == 0``
83
84 - Exception safety: Strong guarantee
85
86
87 - ``template< class Key2 > iterator insert( std::auto_ptr<Key2> x );``
88
89 - Effects: ``return insert( x.release() );``
90
91 ..
92 - ``iterator insert( const key_type& x );``
93
94 - Effects: ``return insert( allocate_clone( x ) );``
95
96 - Exception safety: Strong guarantee
97
98 .. _`pointer container requirements`:
99
100 Semantics: pointer container requirements
101 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
102
103 - ``void transfer( iterator object, ptr_multiset_adapter& from );``
104
105 - Requirements: ``not from.empty()``
106
107 - Effects: Inserts the object defined by ``object`` into the container and remove it from ``from``.
108
109 - Postconditions: ``size()`` is one more, ``from.size()`` is one less.
110
111 - Exception safety: Strong guarantee
112
113 - ``void transfer( iterator first, iterator last, ptr_multiset_adapter& from );``
114
115 - Requirements: ``not from.empty()``
116
117 - Effects: Inserts the objects defined by the range ``[first,last)`` into the container and remove it from ``from``.
118
119 - Postconditions: Let ``N == std::distance(first,last);`` then ``size()`` is ``N`` more, ``from.size()`` is ``N`` less.
120
121 - Exception safety: Basic guarantee
122
123 - ``template< class Range > void transfer( const Range& r, ptr_multiset_adapter& from );``
124
125 - Effects: ``transfer( boost::begin(r), boost::end(r), from );``
126
127 - ``void transfer( ptr_multiset_adapter& from );``
128
129 - Effects: ``transfer( from.begin(), from.end(), from );``.
130
131 - Postconditions: ``from.empty();``
132
133 - Exception safety: Basic guarantee
134
135 .. raw:: html
136
137 <hr>
138
139 :Copyright: Thorsten Ottosen 2004-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt__).
140
141 __ http://www.boost.org/LICENSE_1_0.txt
142
143