我想刪除一些滿足條件的地圖元素。我確實找到了解決方案,但我不知道如何使用它。如何從地圖中刪除元素
我:
std::map<char,int> first;
first['a']=10;
first['b']=60;
first['c']=50;
first['d']=70;
給出的解決方案是:
namespace stuff {
template< typename ContainerT, typename PredicateT >
void erase_if(ContainerT& items, const PredicateT& predicate) {
for(auto it = items.begin(); it != items.end();) {
if(predicate(*it)) it = items.erase(it);
else ++it;
}
};
}
我需要的是如何採用此功能刪除其數量< = 50個元素:
using stuff::erase_if;
int test_value = 50; // or use whatever appropriate type and value
erase_if(container, [&test_value](item_type& item) {
return item.property <= test_value; // or whatever appropriate test
});
爲什麼你的拉姆達使用'ITEM_TYPE&當你的地圖擁有item'了'char'? – NathanOliver
爲什麼沒有嘗試使用[map :: erase](http://www.cplusplus.com/reference/map/map/erase/) –
如果你只是想刪除前兩個元素,那麼爲什麼你甚至需要那個功能?調用'erase'兩次有什麼問題? –