【发布时间】:2013-07-16 08:02:43
【问题描述】:
我正在寻找过滤 boost 变体向量的最佳方法,其定义如下:
boost::variant<T1*, T2, T3> Var;
std::vector<Var> Vec;
当我调用此向量时,仅过滤 T2 有界类型并插入新向量的最佳方法是什么? 或者以其他方式,我想要这样的东西
std::vector<T2> T2Vec = ...(how to filter it from Vec)....
谢谢!
编辑: 由于使用“visitor”更健壮,我也想知道有人可以给我一个使用“visitor”的解决方案吗?
再次感谢!
【问题讨论】:
-
您可以使用与 juanchopanza 的原始方法类似的方法,使用
std::remove_copy_if和一个在v.which()!=1时返回 true 的函子。 -
@cv_and_he 不幸的是,我最初的方法是有缺陷的:没有从
Var到T2的转换运算符。需要的是transform_if算法,但它并不存在。我恢复到一个普通的循环。
标签: c++ boost variant boost-variant