size
template<
typename Sequence
>
struct size
{
typedef unspecified type;
};
size returns the number of elements in the sequence, that is, the number of elements in the range [begin<Sequence>::type,end<Sequence>::type).
#include "boost/mpl/size.hpp"
| Parameter | Requirement | Description |
|---|---|---|
Sequence | A model of Sequence |
| Expression | Expression type | Precondition | Semantics | Postcondition |
|---|---|---|---|---|
typedef size<Sequence>::type s; | A model of Integral Constant | Equivalent to typedef distance< begin<Sequence>::type,end<Sequence>::type >::type s; | s::value >= 0 |
The complexity of the size algorithm directly depends on the implementation of the particular sequence it is applied to. In the worst case size has a linear complexity. As a general rule, if the Sequence is a Random Access Sequence, you can be certain that size<Sequence>::type is an amortized constant time operation. The opposite is not necessary true - for example, a model of Forward Sequence still can guarantee you an amortized constant time size complexity. Please refer the documentation page of the concrete sequence type for further information.
typedef list0<> empty_list; typedef vector_c<int,0,1,2,3,4,5> numbers; typedef range_c<int,0,100> more_numbers;BOOST_STATIC_ASSERT(size<list>::type::value == 0); BOOST_STATIC_ASSERT(size<numbers>::type::value == 5); BOOST_STATIC_ASSERT(size<more_numbers>::type::value == 100);