刪除從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