Я хотел сохранить пару элементов в мультимножестве и отсортировать их в соответствии с первым значением, хранящимся в паре. Я сделал структуру компаратора, которая помогла мне сделать это. Но теперь я не знаю, как использовать функции поиска и стирания мультисета. Могу ли я в любом случае использовать поиск и стирание мультимножества для мультимножества пары?
Как использовать поиск и стирание в С++ мультимножестве пары
Ответы (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 перегружен и может принимать либо значение, либо итератор/диапазон итератора. Если вы передаете итератор, удаляется только этот элемент. Но если вы передадите значение, все элементы, соответствующие этому значению, будут удалены. Если ваш тип данных в мультимножестве является определяемым пользователем объектом, вам необходимо перегрузить оператор ==.
person
Ashutosh Kumar Verma
schedule
14.06.2018
std::multimap
создан именно для этой цели. - person Yksisarvinen   schedule 14.06.2018