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 + -
显示快捷键?