gpt4 book ai didi

c++ - 将 boost 变体的 vector 过滤为新 vector ?

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:46 25 4
gpt4 key购买 nike

我正在寻找过滤已定义如下的 boost 变体 vector 的最佳方法:

 boost::variant<T1*, T2, T3> Var;
std::vector<Var> Vec;

当我调用此 vector 时,仅过滤 T2 有界类型并插入到新 vector 中的最佳方法是什么?或者换句话说,我想要这样的东西

std::vector<T2> T2Vec = ...(how to filter it from Vec)....

谢谢!

编辑:由于使用“访问者”更可靠,我也想知道是否有人可以使用“访问者”给我一个解决方案?

再次感谢!

最佳答案

最简单的解决方案是遍历 Vec,检查元素是否为 double,然后将 double 插入 T2Vec。这是 C++03 版本:

for (std::vector<Var>::const_iterator it = Vec.begin(); it != Vec.end(); ++it)
{
if (it->which() == 1) T2Vec.push_back(boost::get<T2>(*it));
}

C++11 版本:

for (const auto& v : Vec)
{
if (v.which() == 1) T2Vec.push_back(boost::get<T2>(v));
}

关于c++ - 将 boost 变体的 vector 过滤为新 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17671152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com