删除从STL集合项目需要经常用到即成为一个成语的技术:the erase-remove-idiom为什么标准没有提供擦除 - 删除语言的便利帮助?
一本成语最常见的用法是从vector<T>
T
类型的项目
std::vector<Widget> widget_collection;
Widget widget;
widget_collection.erase(
std::remove(widget_collection.begin(), widget_collection.end(), widget),
widget_collection.end());
这显然非常冗长,并且违反了DRY principle - 有问题的向量需要4次。
所以我的问题是为什么标准不提供便利帮手?
喜欢的东西
widget_collection.erase_remove(widget);
或
std::erase_remove(widget_collection, widget);
这可以明显延长至
widget_collection.erase_remove_if(widget, pred);
等等
你冷冷的时候总是写自己的。 – NathanOliver
我有! :)我只是认为这对''很简单,因此所有人都可以从中受益 –
@SteveLorimer我也有。你专注于'list <>'吗? – curiousguy