我有两个不同的对象:
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::variant
的std::vector
中。
std::vector<std::variant< TypeA, TypeB>> ab;
现在我想要删除所有成员
no = 0
的元素。如果没有只包含
TypeA
的向量的std::variant
,我会这样做: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
的谓词中,或者可以吗?