...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Sequences / Intrinsic Metafunctions / insert_range |
template< typename Sequence , typename Pos , typename Range > struct insert_range { typedef unspecified type; };
insert_range performs an insertion of a range of elements at an arbitrary position in the sequence.
#include <boost/mpl/insert_range.hpp>
Parameter | Requirement | Description |
---|---|---|
Sequence | Extensible Sequence or Extensible Associative Sequence | A sequence to insert into. |
Pos | Forward Iterator | An iterator in Sequence specifying the insertion position. |
Range | Forward Sequence | The range of elements to be inserted. |
For any Extensible Sequence s, iterator pos in s, and Forward Sequence range:
typedef insert<s,pos,range>::type r;
Return type: | Extensible Sequence. |
---|---|
Precondition: | pos is an iterator into s. |
Semantics: | r is a sequence, concept-identical to s, of the following elements: [begin<s>::type, pos), [begin<r>::type, end<r>::type), [pos, end<s>::type). |
Postcondition: | The relative order of the elements in r is the same as in s; size<r>::value == size<s>::value + size<range>::value |
Sequence dependent. Quadratic in the worst case, linear at best; see the particular sequence class' specification for details.
typedef vector_c<int,0,1,7,8,9> numbers; typedef find< numbers,integral_c<int,7> >::type pos; typedef insert_range< numbers,pos,range_c<int,2,7> >::type range; BOOST_MPL_ASSERT_RELATION( size<range>::value, ==, 10 ); BOOST_MPL_ASSERT(( equal< range,range_c<int,0,10> > )); typedef insert_range< list0<> , end< list0<> >::type , list<int> >::type result2; BOOST_MPL_ASSERT_RELATION( size<result2>::value, ==, 1 );