]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/icl/doc/functions_insertion.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / icl / doc / functions_insertion.qbk
CommitLineData
7c673cae
FG
1[/
2 Copyright (c) 2008-2010 Joachim Faulhaber
3
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt)
7]
8
9
10[/ //= Insertion ===================================================================]
11[section Insertion]
12
13[section Synopsis][/ Insertion]
14
15[table
16[[['*Insertion*]][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__] ]
17
18[[`V T::insert(const P&)`] [__ei] [__bp] [__e] [__b] ]
19[[`V insert(T&, const P&)`] [__ei] [__bp] [__e] [__b] ]
20[[`J T::insert(J pos, const P&)`] [__i] [__p] [__e] [__b] ]
21[[`J insert(T&, J pos, const P&)`] [__i] [__p] [__e] [__b] ]
22[[`T& insert(T&, const P&)`] [__eiS] [__bpM] [__es] [__bm] ]
23[[`T& T::set(const P&)`] [ ] [__bp] [ ] [1] ]
24[[`T& set_at(T&, const P&)`] [ ] [__bp] [ ] [1] ]
25
26]
27
28[h5 Insertion]
29
30The effects of ['*insertion*] implemented by `insert` and ['*addition*]
31implemented by `add` and `operator +=` are identical for all Set-types of
32the *icl*.
33
34For Map-types, `insert` provides the *stl* semantics of insertion in
35contrast to `add` and `operator +=`, that implement a generalized addition,
36that performs aggregations if key values collide or key intervals overlap.
37`insert` on Maps does not alter a maps content at the points, where
38the keys of the object to inserted overlap or collide with keys that
39are already in the map.
40
41
42[h5 Setting values]
43
44Overwriting values using `operator[]` like in
45``
46my_map[key] = new_value;
47``
48is not provided for __itv_maps__ because an `operator[]` is not
49implemented for them. As a substitute a function
50`T& T::set(const P&)` can be used to achieve the same effect:
51``
52my_map.set(make_pair(overwrite_this, new_value));
53``
54
55[endsect][/ Synopsis Insertion]
56
57[section Insertion]
58
59``
60// overload table for functions T\P| e i b p
61V T::insert(const P&) ---+--------
62V insert(T&, const P&) s | s
63 m | m
64 S | S
65 M | M
66``
67
68[table Time Complexity for member function insert on icl containers
69[[`T& T::insert(const P&)`] [__ch_dom_t__][__ch_itv_t__][__ch_dom_mp_t__][__ch_itv_mp_t__]]
70[[__icl_set__] [__Olgn__] [] [] [] ]
71[[__icl_map__] [] [] [__Olgn__][] ]
72[[__itv_set__\n__sep_itv_set__][__Olgn__] [__a_Olgn__][] [] ]
73[[__spl_itv_set__] [__Olgn__] [__On__] [] [] ]
74[[__itv_map__\n__spl_itv_map__][] [] [__Olgn__][__On__] ]
75]
76
77``
78// overload tables for function element containers: interval containers:
79T& insert(T&, const P&) T\P| e b s m T\P| e i b p S M
80 ---+-------- ---+------------
81 s | s s S | S S S
82 m | m m M | M M M
83``
84
85
86[table Time Complexity for inplace insertion on element containers
87[[`T& insert(T& y, const P& x)`][__ch_dom_t__][__ch_dom_mp_t__][__ch_itv_sets__][__ch_itv_maps__]]
88[[__icl_set__] [__Olgn__] [] [__Om__] [] ]
89[[__icl_map__] [] [__Olgn__] [] [__Om__] ]
90]
91
92Time complexity characteristics of inplace insertion for interval containers
93is given by this table.
94
95[table Time Complexity for inplace insertion on interval containers
96[[`T& insert(T& y, const P& x)`][][__ch_dom_t__][__ch_itv_t__][__ch_dom_mp_t__][__ch_itv_mp_t__][__ch_itv_sets__][__ch_itv_maps__]]
97[[interval_sets][__itv_set__\n__sep_itv_set__][__Olgn__] [__a_Olgn__][] [] [__Omlgnpm__] [] ]
98[[] [__spl_itv_set__] [__Olgn__] [__On__] [] [] [__Omlgnpm__] [] ]
99[[interval_maps][] [] [] [__Olgn__][__On__] [] [__Omlgnpm__] ]
100]
101
102
103[h4 Hinted insertion]
104
105Function `J T::insert(J prior, const P& addend)` allows
106for an insertion in ['*constant time*], if `addend` can be inserted
107right after iterator `prior` without collision. If this is not possible
108the complexity characteristics are as stated for the non hinted insertion
109above. Hinted insertion is available for these combinations of types:
110``
111// overload table for insertion with hint T\P| e i b p
112J T::insert(J pos, const P&) ---+--------
113J insert(T&, J pos, const P&) s | s
114 m | m
115 S | S
116 M | M
117``
118
119[endsect][/ Insertion]
120
121
122
123[section Setting values]
124
125``
126// overload table for member function T\P| b p
127T& T::set(const P&) ---+----
128T& set_at(T&, const P&) m | m
129 M | M
130``
131
132[table Time Complexity for member function `set`
133[[`T& set(T&, const P&)`] [domain_mapping_type] [interval_mapping_type] ]
134[[icl::map] [__Olgn__] [ ] ]
135[[interval_maps] [] [__a_Olgn__] ]
136]
137
138[endsect][/ Set]
139
140['*See also . . .*]
141[table
142[]
143[[[link boost_icl.function_reference.addition ['*Erasure*]] ]]
144[[[link boost_icl.function_reference.addition ['*Addition*]] ]]
145]
146
147['*Back to section . . .*]
148[table
149[]
150[[[link function_synopsis_table ['*Function Synopsis*]]]]
151[[[link boost_icl.interface ['*Interface*]] ]]
152]
153
154[endsect][/ Insertion]
155
156