range_c.rst

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

RST
123
字号
.. Sequences/Classes//range_c |60.. 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)range_c=======Synopsis--------.. parsed-literal::        template<          typename T        , T Start        , T Finish        >    struct range_c    {        typedef integral_c<T,Start> start;        typedef integral_c<T,Finish> finish;        // |unspecified|        // |...|    };Description-----------``range_c`` is a sorted |Random Access Sequence| of |Integral Constant|\ s. Note that because it is not an |Extensible Sequence|, sequence-building intrinsic metafunctions such as ``push_front`` and transformation algorithmssuch as ``replace`` are not directly applicable |--| to be able to usethem, you'd first need to copy the content of the range into a more suitablesequence.Header------.. parsed-literal::        #include <boost/mpl/range_c.hpp>Model of--------|Random Access Sequence|Expression semantics--------------------In the following table, ``r`` is an instance of ``range_c``, ``n`` is an |Integral Constant|,``T`` is an arbitrary integral type, and ``n`` and ``m`` are integral constant values of type ``T``.+-------------------------------+-----------------------------------------------------------+| Expression                    | Semantics                                                 |+===============================+===========================================================+| .. parsed-literal::           | A sorted |Random Access Sequence| of integral constant    ||                               | wrappers for the half-open range of values [\ ``n``,      ||    ``range_c<T,n,m>``         | ``m``): ``integral_c<T,n>``, ``integral_c<T,n+1>``,...    ||    ``range_c<T,n,m>::type``   | ``integral_c<T,m-1>``.                                    ||                               |                                                           |+-------------------------------+-----------------------------------------------------------+| ``begin<r>::type``            | An iterator pointing to the beginning of ``r``;           ||                               | see |Random Access Sequence|.                             |+-------------------------------+-----------------------------------------------------------+| ``end<r>::type``              | An iterator pointing to the end of ``r``;                 ||                               | see |Random Access Sequence|.                             |+-------------------------------+-----------------------------------------------------------+| ``size<r>::type``             | The size of ``r``; see |Random Access Sequence|.          |+-------------------------------+-----------------------------------------------------------+| ``empty<r>::type``            | |true if and only if| ``r`` is empty; see                 ||                               | |Random Access Sequence|.                                 |+-------------------------------+-----------------------------------------------------------+| ``front<r>::type``            | The first element in ``r``; see                           ||                               | |Random Access Sequence|.                                 |+-------------------------------+-----------------------------------------------------------+| ``back<r>::type``             | The last element in ``r``; see                            ||                               | |Random Access Sequence|.                                 |+-------------------------------+-----------------------------------------------------------+| ``at<r,n>::type``             | The ``n``\ th element from the beginning of ``r``; see    ||                               | |Random Access Sequence|.                                 |+-------------------------------+-----------------------------------------------------------+Example-------.. parsed-literal::        typedef range_c<int,0,0> range0;    typedef range_c<int,0,1> range1;    typedef range_c<int,0,10> range10;        BOOST_MPL_ASSERT_RELATION( size<range0>::value, ==, 0 );    BOOST_MPL_ASSERT_RELATION( size<range1>::value, ==, 1 );    BOOST_MPL_ASSERT_RELATION( size<range10>::value, ==, 10 );        BOOST_MPL_ASSERT(( empty<range0> ));    BOOST_MPL_ASSERT_NOT(( empty<range1> ));    BOOST_MPL_ASSERT_NOT(( empty<range10> ));        BOOST_MPL_ASSERT(( is_same< begin<range0>::type, end<range0>::type > ));    BOOST_MPL_ASSERT_NOT(( is_same< begin<range1>::type, end<range1>::type > ));    BOOST_MPL_ASSERT_NOT(( is_same< begin<range10>::type, end<range10>::type > ));        BOOST_MPL_ASSERT_RELATION( front<range1>::type::value, ==, 0 );    BOOST_MPL_ASSERT_RELATION( back<range1>::type::value, ==, 0 );    BOOST_MPL_ASSERT_RELATION( front<range10>::type::value, ==, 0 );    BOOST_MPL_ASSERT_RELATION( back<range10>::type::value, ==, 9 );See also--------|Sequences|, |Random Access Sequence|, |vector_c|, |set_c|, |list_c|

⌨️ 快捷键说明

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