Как использовать поиск и стирание в С++ мультимножестве пары

Я хотел сохранить пару элементов в мультимножестве и отсортировать их в соответствии с первым значением, хранящимся в паре. Я сделал структуру компаратора, которая помогла мне сделать это. Но теперь я не знаю, как использовать функции поиска и стирания мультисета. Могу ли я в любом случае использовать поиск и стирание мультимножества для мультимножества пары?


person Aaron    schedule 14.06.2018    source источник
comment
Почему? std::multimap создан именно для этой цели.   -  person Yksisarvinen    schedule 14.06.2018
comment
@Yksisarvinen Да, вы правы, я новичок в С++ и не знал об этой структуре данных.   -  person Aaron    schedule 18.06.2018


Ответы (1)


multiset<int,int> myset;
myset.insert(make_pair(3,5));
if(myset.find(make_pair(3,5))!=myset.end())
    myset.erase(myset.find(make_pair(3,5)));

Это удалит одну пару (3,5). Если вы хотите удалить все пары (3,5), вам нужно просто сделать myset.erase(make_pair(3,5)) .

std::multiset::erase перегружен и может принимать либо значение, либо итератор/диапазон итератора. Если вы передаете итератор, удаляется только этот элемент. Но если вы передадите значение, все элементы, соответствующие этому значению, будут удалены. Если ваш тип данных в мультимножестве является определяемым пользователем объектом, вам необходимо перегрузить оператор ==.

std::multiset::erase

person Ashutosh Kumar Verma    schedule 14.06.2018