Вы можете использовать std::multimap<char, int>::equal_range
, что даст вам диапазон итератора, содержащий все пары с определенным ключом. Поэтому, если вы ищите «b», вы получите диапазон итераторов, содержащий все пары, в которых ключ «b».
Затем вы можете просто выполнить итерацию по диапазону и стереть любую пару, которую считаете нужным, стерев итератор.
multimap<char,int> mymap;
mymap.insert(pair<char,int>('a',10));
mymap.insert(pair<char,int>('b',15));
mymap.insert(pair<char,int>('b',20));
mymap.insert(pair<char,int>('c',25));
typedef multimap<char, int>::iterator iterator;
std::pair<iterator, iterator> iterpair = mymap.equal_range('b');
// Erase (b,15) pair
//
iterator it = iterpair.first;
for (; it != iterpair.second; ++it) {
if (it->second == 15) {
mymap.erase(it);
break;
}
}