blob: 189ec345077a16dcca062737dc610119292e0bf8 [file] [log] [blame]
[/
Copyright (c) 2008-2009 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)
]
[/ //= Construct, copy, destruct ===================================================================]
[section Construct, copy, destruct]
[table
[[['*Construct, copy, destruct*]] [__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__] ]
[[`T::T()`] [1] [1] [1] [1] [1] ]
[[`T::T(const P&)`] [A] [__eiS] [__bpM] [1] [1] ]
[[`T& T::operator=(const P&)`] [A] [__S] [__M] [1] [1] ]
[[`void T::swap(T&)`] [ ] [1] [1] [1] [1] ]
]
All *icl* types are ['*regular types*]. They are ['*default constructible*],
['*copy constructible*] and ['*assignable*]. On icl Sets and Maps a `swap`
function is available, that allows for *constant time* swapping of
container contents.
The /regular and swappable part/ of the basic functions and their complexities
are described in the tables below.
[table
[[['*Regular and swap*]] [__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__] ]
[[`T::T()`] [__O1__] [__O1__] [__O1__][__O1__] [__O1__] ]
[[`T::T(const T&)`] [__O1__] [__On__] [__On__][__On__] [__On__] ]
[[`T& T::operator=(const T&)`] [__O1__] [__On__] [__On__][__On__] [__On__] ]
[[`void T::swap(T&)`] [ ] [__O1__] [__O1__][__O1__] [__O1__] ]
]
where /n/ `= iterative_size(x)`.
[table
[[['*Construct, copy, destruct*]] [Description] ]
[[`T::T()`] [Object of type T is default constructed.] ]
[[`T::T(const T& src)`] [Object of type T is copy constructed from object `src`. ] ]
[[`T& T::operator=(const T& src)`][Assigns the contents of src to `*this` object. Returns a reference to the assigned object.] ]
[[`void T::swap(T& src)`] [Swaps the content containers `*this` and `src` in constant time. ] ]
]
In addition we have overloads of constructors and assignment operators
for icl container types.
``
// overload tables for constructors
T::T(const P& src)
element containers: interval containers:
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
``
For an object `dst` of type `T` and an argument `src` of type `P` let
``
n = iterative_size(dst);
m = iterative_size(src);
``
in the following tables.
[table Time Complexity for overloaded constructors on element containers
[[`T(const P& src)`][__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 overloaded constructors on interval containers
[[`T(const P& src)`] [__ch_dom_t__][__ch_itv_t__][__ch_dom_mp_t__][__ch_itv_mp_t__][__ch_itv_sets__][__ch_itv_maps__]]
[[interval_sets] [__O1__] [__O1__][] [] [__Om__] [] ]
[[interval_maps] [] [] [__O1__][__O1__][] [__Om__] ]
]
``
// overload tables for assignment
T& operator = (const P& src)
interval containers:
T \ P | S M
------+----
S | S
M | M
``
The assignment `T& operator = (const P& src)` is overloaded within interval containers.
For all type combinations we have ['*linear time complexity*]
in the maximum of the `iterative_size` of `dst` and `src`.
['*Back to section . . .*]
[table
[]
[[[link function_synopsis_table ['*Function Synopsis*]]]]
[[[link boost_icl.interface ['*Interface*]] ]]
]
[endsect][/ Construct, copy, destruct]