我有一份UUID列表。我想用给定的UUID删除列表中的元素。我的问题是,如何使用boost lambdas和std::list::remove_if
方法实现这一点,这样我就不必在外部编写比较函数。
答案 0 :(得分:1)
Boost UUID具有可比性,并提供比较运算符。当你知道UUID时,你可以使用std :: remove。
std::vector<boost::Uuid> uuids = /* ... */;
boost::Uuid toRemove;
uuids.erase( std::remove(uuids.begin(), uuids.end(), toRemove), uuids.end() );
如果您愿意,可以使用boost bind来修复一个参数
bool cmp(boost::Uuid const& x, boost::Uuid const& y) {return x == y;}
uuids.erase( std::remove_if(uuids.begin(),
uuids.end(),
boost::bind(cmp, toRemove, _2) )
uuids.end() );
答案 1 :(得分:1)
如果您的容器是std::list
,则您拥有成员函数 std::list::remove()
和std::list::remove_if()
。
由于boost::Uuid
已经实现了比较operator==()
,因此您可以执行以下操作:
std::list<boost::Uuid> uuids;
...
uuids.remove(uuidToRemove);