標題頁 / 序列 / 固有的元函數 / insert

insert

摘要

template< 
typename Sequence
, typename Pos
, typename T
>
struct insert { typedef unspecified type;
};


template<
typename Sequence
, typename T
>
struct insert { typedef unspecified type;
};

描述

insert 是一個 重載的名字:

頭文件

#include <boost/mpl/insert.hpp>

Model of

Tag 分派元函數

參數

參數 要求 描述
Sequence 可擴展序列 或 可擴展關聯序列 插入元素的序列
Pos 前向迭代器 Sequence 中的迭代器,指定插入的位置
T 任意類型 插入的元素

表達式語義

對於任意 可擴展序列 s, s 中的迭代器 pos, 以及任意類型 x:

typedef insert<s,pos,x>::type r; 
返回類型: 可擴展序列
前置條件: poss 中的一個迭代器
語義: r 是一個序列, 概念上等同於 s, 具有以下元素: [begin<s>::type, pos), x, [pos, end<s>::type).
後置條件:

r 中的元素的相對位置與 s 中的相同。

at< r, distance< begin<s>::type,pos >::type >::type

等同於 x;

size<r>::value == size<s>::value + 1;        

對於任意 可擴展關聯序列 ss 中的迭代器 pos, 以及任意類型 x:

typedef insert<s,x>::type r; 
返回類型: 可擴展關聯序列
語義: r 概念於等同於 且等價於 s, 除了 at< r, key_type<s,x>::type >::type 等同於 value_type<s,x>::type.
後置條件: size<r>::value == size<s>::value + 1.
typedef insert<s,pos,x>::type r; 
返回類型: 可擴展關聯序列
前置條件: poss 中的迭代器
語義: 等價於 typedef insert<s,x>::type r; pos 被忽略

複雜度

序列原型 複雜度
可擴展關聯序列 分期常量時間
可擴展序列 最壞情況為線性時間,或者為分期常量時間

例子

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> > ));
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 > ));

參見

可擴展序列, 可擴展關聯序列, insert_range, push_front, push_back, erase