insert.rst

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

RST
197
字号
.. Sequences/Intrinsic Metafunctions//insert.. 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)insert======Synopsis--------.. parsed-literal::    template<           typename Sequence        , typename Pos        , typename T         >    struct insert    {        typedef |unspecified| type;    };    template<           typename Sequence        , typename T         >    struct insert    {        typedef |unspecified| type;    };Description-----------``insert`` is an |overloaded name|:* ``insert<Sequence,Pos,T>`` performs an insertion of  type ``T`` at an arbitrary position ``Pos`` in ``Sequence``. ``Pos`` is ignored is  ``Sequence`` is a model of |Extensible Associative Sequence|. * ``insert<Sequence,T>`` is a shortcut notation for ``insert<Sequence,Pos,T>`` for the   case when ``Sequence`` is a model of |Extensible Associative Sequence|.Header------.. parsed-literal::        #include <boost/mpl/insert.hpp>Model of--------|Tag Dispatched Metafunction|Parameters----------+---------------+-----------------------------------+-----------------------------------------------+| Parameter     | Requirement                       | Description                                   |+===============+===================================+===============================================+| ``Sequence``  | |Extensible Sequence| or          | A sequence to insert into.                    ||               | |Extensible Associative Sequence| |                                               |+---------------+-----------------------------------+-----------------------------------------------+| ``Pos``       | |Forward Iterator|                | An iterator in ``Sequence`` specifying the    ||               |                                   | insertion position.                           |+---------------+-----------------------------------+-----------------------------------------------+| ``T``         | Any type                          | The element to be inserted.                   |+---------------+-----------------------------------+-----------------------------------------------+Expression semantics--------------------.. compound::    :class: expression-semantics    For any |Extensible Sequence| ``s``, iterator ``pos`` in ``s``, and arbitrary type ``x``:    .. parsed-literal::        typedef insert<s,pos,x>::type r;     :Return type:        |Extensible Sequence|    :Precondition:        ``pos`` is an iterator in ``s``.     :Semantics:        ``r`` is a sequence, |concept-identical| to ``s``, of the following elements:         [``begin<s>::type``, ``pos``), ``x``, [``pos``, ``end<s>::type``).             :Postcondition:        The relative order of the elements in ``r`` is the same as in ``s``.         .. parsed-literal::           at< r, distance< begin<s>::type,pos >::type >::type                is identical to ``x``;         .. parsed-literal::           size<r>::value == size<s>::value + 1;                .. compound::    :class: expression-semantics    For any |Extensible Associative Sequence| ``s``, iterator ``pos`` in ``s``,    and arbitrary type ``x``:    .. parsed-literal::        typedef insert<s,x>::type r;     :Return type:        |Extensible Associative Sequence|    :Semantics:        ``r`` is |concept-identical| and equivalent to ``s``, except that        ``at< r, key_type<s,x>::type >::type`` is identical to ``value_type<s,x>::type``.            :Postcondition:        ``size<r>::value == size<s>::value + 1``.    .. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    .. parsed-literal::        typedef insert<s,pos,x>::type r;     :Return type:        |Extensible Associative Sequence|    :Precondition:        ``pos`` is an iterator in ``s``.     :Semantics:        Equivalent to ``typedef insert<s,x>::type r``; ``pos`` is ignored.        Complexity----------+---------------------------------------+-----------------------------------------------+| Sequence archetype                    | Complexity                                    |+=======================================+===============================================+| |Extensible Associative Sequence|     | Amortized constant time.                      |+---------------------------------------+-----------------------------------------------+| |Extensible Sequence|                 | Linear in the worst case, or amortized        ||                                       | constant time.                                |+---------------------------------------+-----------------------------------------------+Example-------.. parsed-literal::        typedef vector_c<int,0,1,3,4,5,6,7,8,9> numbers;    typedef find< numbers,integral_c<int,3> >::type pos;    typedef insert< numbers,pos,integral_c<int,2> >::type range;        BOOST_MPL_ASSERT_RELATION( size<range>::value, ==, 10 );    BOOST_MPL_ASSERT(( equal< range,range_c<int,0,10> > ));.. parsed-literal::    typedef map< mpl::pair<int,unsigned> > m;    typedef insert<m,mpl::pair<char,long> >::type m1;        BOOST_MPL_ASSERT_RELATION( size<m1>::value, ==, 2 );    BOOST_MPL_ASSERT(( is_same< at<m1,int>::type,unsigned > ));    BOOST_MPL_ASSERT(( is_same< at<m1,char>::type,long > ));See also--------|Extensible Sequence|, |Extensible Associative Sequence|, |insert_range|, |push_front|, |push_back|, |erase|

⌨️ 快捷键说明

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