【发布时间】:2019-01-31 21:12:16
【问题描述】:
我有两个不同的对象:
struct TypeA {
std::size_t no;
std::string data;
std::string data2;
};
struct TypeB {
std::size_t no;
std::string data;
std::string data2;
std::string data3;
};
它们存储在std::vector 和std::variant 中
std::vector<std::variant< TypeA, TypeB>> ab;
现在我要删除成员 no = 0 的所有元素。
如果没有 std::variant 和只包含 TypeA 的向量,我会这样做:
ab.erase(std::remove_if(ab.begin(), ab.end(),
[](const TypeA& a) { return a.no == 0; }), ab.end());
但是如何合并 std::variant 呢?我试图用std::visit 想出一些东西,但我不能在std::remove_if 的谓词中添加它,或者我可以吗?
【问题讨论】: