[/ Copyright (c) 2008-2010 Joachim Faulhaber Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ] [/ //= Insertion ===================================================================] [section Insertion] [section Synopsis][/ Insertion] [table [[['*Insertion*]][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__] ] [[`V T::insert(const P&)`] [__ei] [__bp] [__e] [__b] ] [[`V insert(T&, const P&)`] [__ei] [__bp] [__e] [__b] ] [[`J T::insert(J pos, const P&)`] [__i] [__p] [__e] [__b] ] [[`J insert(T&, J pos, const P&)`] [__i] [__p] [__e] [__b] ] [[`T& insert(T&, const P&)`] [__eiS] [__bpM] [__es] [__bm] ] [[`T& T::set(const P&)`] [ ] [__bp] [ ] [1] ] [[`T& set_at(T&, const P&)`] [ ] [__bp] [ ] [1] ] ] [h5 Insertion] The effects of ['*insertion*] implemented by `insert` and ['*addition*] implemented by `add` and `operator +=` are identical for all Set-types of the *icl*. For Map-types, `insert` provides the *stl* semantics of insertion in contrast to `add` and `operator +=`, that implement a generalized addition, that performs aggregations if key values collide or key intervals overlap. `insert` on Maps does not alter a maps content at the points, where the keys of the object to inserted overlap or collide with keys that are already in the map. [h5 Setting values] Overwriting values using `operator[]` like in `` my_map[key] = new_value; `` is not provided for __itv_maps__ because an `operator[]` is not implemented for them. As a substitute a function `T& T::set(const P&)` can be used to achieve the same effect: `` my_map.set(make_pair(overwrite_this, new_value)); `` [endsect][/ Synopsis Insertion] [section Insertion] `` // overload table for functions T\P| e i b p V T::insert(const P&) ---+-------- V insert(T&, const P&) s | s m | m S | S M | M `` [table Time Complexity for member function insert on icl containers [[`T& T::insert(const P&)`] [__ch_dom_t__][__ch_itv_t__][__ch_dom_mp_t__][__ch_itv_mp_t__]] [[__icl_set__] [__Olgn__] [] [] [] ] [[__icl_map__] [] [] [__Olgn__][] ] [[__itv_set__\n__sep_itv_set__][__Olgn__] [__a_Olgn__][] [] ] [[__spl_itv_set__] [__Olgn__] [__On__] [] [] ] [[__itv_map__\n__spl_itv_map__][] [] [__Olgn__][__On__] ] ] `` // overload tables for function element containers: interval containers: T& insert(T&, const P&) T\P| e b s m T\P| e i b p S M ---+-------- ---+------------ s | s s S | S S S m | m m M | M M M `` [table Time Complexity for inplace insertion on element containers [[`T& insert(T& y, const P& x)`][__ch_dom_t__][__ch_dom_mp_t__][__ch_itv_sets__][__ch_itv_maps__]] [[__icl_set__] [__Olgn__] [] [__Om__] [] ] [[__icl_map__] [] [__Olgn__] [] [__Om__] ] ] Time complexity characteristics of inplace insertion for interval containers is given by this table. [table Time Complexity for inplace insertion on interval containers [[`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__]] [[interval_sets][__itv_set__\n__sep_itv_set__][__Olgn__] [__a_Olgn__][] [] [__Omlgnpm__] [] ] [[] [__spl_itv_set__] [__Olgn__] [__On__] [] [] [__Omlgnpm__] [] ] [[interval_maps][] [] [] [__Olgn__][__On__] [] [__Omlgnpm__] ] ] [h4 Hinted insertion] Function `J T::insert(J prior, const P& addend)` allows for an insertion in ['*constant time*], if `addend` can be inserted right after iterator `prior` without collision. If this is not possible the complexity characteristics are as stated for the non hinted insertion above. Hinted insertion is available for these combinations of types: `` // overload table for insertion with hint T\P| e i b p J T::insert(J pos, const P&) ---+-------- J insert(T&, J pos, const P&) s | s m | m S | S M | M `` [endsect][/ Insertion] [section Setting values] `` // overload table for member function T\P| b p T& T::set(const P&) ---+---- T& set_at(T&, const P&) m | m M | M `` [table Time Complexity for member function `set` [[`T& set(T&, const P&)`] [domain_mapping_type] [interval_mapping_type] ] [[icl::map] [__Olgn__] [ ] ] [[interval_maps] [] [__a_Olgn__] ] ] [endsect][/ Set] ['*See also . . .*] [table [] [[[link boost_icl.function_reference.addition ['*Erasure*]] ]] [[[link boost_icl.function_reference.addition ['*Addition*]] ]] ] ['*Back to section . . .*] [table [] [[[link function_synopsis_table ['*Function Synopsis*]]]] [[[link boost_icl.interface ['*Interface*]] ]] ] [endsect][/ Insertion]