size.rst

来自「Boost provides free peer-reviewed portab」· RST 代码 · 共 115 行

RST
115
字号
.. Sequences/Intrinsic Metafunctions//size.. Copyright Aleksey Gurtovoy, David Abrahams 2007... 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)size====Synopsis--------.. parsed-literal::        template<          typename Sequence        >    struct size    {        typedef |unspecified| type;    };Description-----------``size`` returns the number of elements in the sequence, that is, the number of elements in the range [``begin<Sequence>::type``, ``end<Sequence>::type``).Header------.. parsed-literal::        #include <boost/mpl/size.hpp>Model of--------|Tag Dispatched Metafunction|Parameters----------+---------------+-----------------------+-----------------------------------------------+| Parameter     | Requirement           | Description                                   |+===============+=======================+===============================================+| ``Sequence``  | |Forward Sequence|    | A sequence to query.                          |+---------------+-----------------------+-----------------------------------------------+Expression semantics--------------------For any |Forward Sequence| ``s``:.. parsed-literal::    typedef size<s>::type n; :Return type:    |Integral Constant|.:Semantics:    Equivalent to     .. parsed-literal::           typedef distance< begin<s>::type,end<s>::type >::type n;:Postcondition:    ``n::value >= 0``.Complexity----------The complexity of the ``size`` metafunction directly depends on the implementation of the particular sequence it is applied to. In the worst case, ``size`` guarantees a linear complexity.If the ``s`` is a |Random Access Sequence|, ``size<s>::type`` is an |O(1)| operation. The opposite is not necessarily true |--| for example, a sequence class that models |Forward Sequence| might still give us an |O(1)| ``size`` implementation.Example-------.. parsed-literal::        typedef list0<> empty_list;    typedef vector_c<int,0,1,2,3,4,5> numbers;    typedef range_c<int,0,100> more_numbers;        BOOST_MPL_ASSERT_RELATION( size<list>::value, ==, 0 );    BOOST_MPL_ASSERT_RELATION( size<numbers>::value, ==, 5 );    BOOST_MPL_ASSERT_RELATION( size<more_numbers>::value, ==, 100 );See also--------|Forward Sequence|, |Random Access Sequence|, |empty|, |begin|, |end|, |distance|

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?