Удалить определенные элементы в std :: map

Я хочу стереть некоторые элементы в моем std :: map.
Я написал технику erase + remove_if, которую я всегда использую с другими контейнерами последовательностей.
Но это не было скомпилировано с картой. Почему?
И как я могу выполнить эту работу?

std::map<int, int> m;

bool foo(const std::pair<int, int>& p)
{
    return p.second > 15;
}

int _tmain(int argc, _TCHAR* argv[])
{
    m.insert(make_pair(0, 0));
    m.insert(make_pair(1, 10));
    m.insert(make_pair(2, 20));
    m.insert(make_pair(3, 30));

    m.erase(
        remove_if(m.begin(), m.end(), foo),
        m.end()); // compile error

    return 0;
}
13
задан Benjamin 10 August 2011 в 08:23
поделиться