[英]filter a vector of boost variant into a new vector?
我正在尋找最好的方法來過濾定義為boost的矢量的矢量:
boost::variant<T1*, T2, T3> Var;
std::vector<Var> Vec;
當我將此向量稱為“向量”時,僅過濾T2有界類型並將其插入新向量的最佳方法是什么? 或者以其他方式,我想要這樣的東西
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));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.