⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distance.rst

📁 C++的一个好库。。。现在很流行
💻 RST
字号:
.. Iterators/Iterator Metafunctions//distance |20

distance
========

Synopsis
--------

.. parsed-literal::
    
    template<
          typename First
        , typename Last
        >
    struct distance
    {
        typedef |unspecified| type;
    };



Description
-----------

Returns the distance between ``First`` and ``Last`` iterators, that is, an 
|Integral Constant| ``n`` such that ``advance<First,n>::type`` is 
identical to ``Last``.


Header
------

.. parsed-literal::
    
    #include <boost/mpl/distance.hpp>


Parameters
----------

+---------------+---------------------------+-----------------------------------+
| Parameter     | Requirement               | Description                       |
+===============+===========================+===================================+
| ``First``,    | |Forward Iterator|        | Iterators to compute a            |
| ``Last``      |                           | distance between.                 |
+---------------+---------------------------+-----------------------------------+

Model Of
--------

|Tag Dispatched Metafunction|


Expression semantics
--------------------

For any |Forward Iterator|\ s ``first`` and ``last``:

.. parsed-literal::

    typedef distance<first,last>::type n; 

:Return type:
    |Integral Constant|.

:Precondition:
    [``first``, ``last``) is a valid range.

:Semantics:
    Equivalent to
    
    .. parsed-literal::
    
        typedef iter_fold<
              iterator_range<first,last>
            , long_<0>
            , next<_1>
            >::type n;
        

:Postcondition:
    ``is_same< advance<first,n>::type, last >::value == true``.


Complexity
----------

Amortized constant time if ``first`` and ``last`` are |Random Access Iterator|\ s,
otherwise linear time.


Example
-------

.. parsed-literal::
    
    typedef range_c<int,0,10>::type range;
    typedef begin<range>::type first;
    typedef end<range>::type last;
    
    BOOST_MPL_ASSERT_RELATION( (distance<first,last>::value), ==, 10);


See also
--------

|Iterators|, |Tag Dispatched Metafunction|, |advance|, |next|, |prior|

⌨️ 快捷键说明

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