Boost C++ 库

...世界上最受推崇、设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

MPL 参考手册:remove - Boost C++ 函数库
首页 / 算法 / 转换算法 / remove

remove

提要

template<
      typename Sequence
    , typename T
    , typename In = unspecified
    >
struct remove
{
    typedef unspecified type;
};

描述

返回一个新序列,其中包含 [ 中的所有元素begin<Sequence>::type, end<Sequence>::type) 范围,但那些与以下内容相同的除外T.

[注意:此措辞适用于算法的无插入器版本。有关算法在所有情况下的精确规范,请参见表达式语义子节——结束注释]

参数

Parameter 要求 描述
序列 Forward Sequence 原始序列。
T 任何类型 要删除的类型。
Inserter 一个插入器。

表达式语义

表达式的语义仅在与 可逆算法 不同或未在其中定义的地方定义。

对于任何 Forward Sequences,一个 Inserterin、和任意类型x:

typedef remove<s,x,in>::type r;
返回类型

一个类型。

语义

等同于

typedef remove_if< s,is_same<_,x>,in >::type r;

复杂度

线性。执行正好size<s>::value等于的比较,并且最多size<s>::value插入。

示例

typedef vector<int,float,char,float,float,double>::type types;
typedef remove< types,float >::type result;

BOOST_MPL_ASSERT(( equal< result, vector<int,char,double> > ));