iterator_category.rst

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

RST
116
字号
.. Iterators/Iterator Metafunctions//iterator_category |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)iterator_category=================Synopsis--------.. parsed-literal::        template<          typename Iterator        >    struct iterator_category    {        typedef typename Iterator::category type;    };Description-----------Returns one of the following iterator category tags: * ``forward_iterator_tag``* ``bidirectional_iterator_tag``* ``random_access_iterator_tag``Header------.. parsed-literal::        #include <boost/mpl/iterator_category.hpp>    #include <boost/mpl/iterator_tags.hpp>Parameters----------+---------------+-----------------------+-------------------------------------------+| Parameter     | Requirement           | Description                               |+===============+=======================+===========================================+| ``Iterator``  | |Forward Iterator|    | The iterator to obtain a category for.    |+---------------+-----------------------+-------------------------------------------+Expression semantics--------------------For any |Forward Iterator|\ s ``iter``:.. parsed-literal::    typedef iterator_category<iter>::type tag; :Return type:    |Integral Constant|.:Semantics:    ``tag`` is ``forward_iterator_tag`` if ``iter`` is a model of |Forward Iterator|,     ``bidirectional_iterator_tag`` if ``iter`` is a model of |Bidirectional Iterator|,    or ``random_access_iterator_tag`` if ``iter`` is a model of |Random Access Iterator|;:Postcondition:     ``forward_iterator_tag::value < bidirectional_iterator_tag::value``,      ``bidirectional_iterator_tag::value < random_access_iterator_tag::value``.Complexity----------Amortized constant time.Example-------.. parsed-literal::    template< typename Tag, typename Iterator >    struct algorithm_impl    {        // *O(n)* implementation    };    template< typename Iterator >    struct algorithm_impl<random_access_iterator_tag,Iterator>    {        // *O(1)* implementation    };        template< typename Iterator >    struct algorithm        : algorithm_impl<              iterator_category<Iterator>::type            , Iterator            >    {    };See also--------|Iterators|, |begin| / |end|, |advance|, |distance|, |next|

⌨️ 快捷键说明

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