Удалить только один элемент из unordered_multiset

Я хочу стереть определенный элемент из std::unordered_multiset, но когда я пытаюсь с erase функция, она устраняет все элементы, независимо от того, сколько их.
Например:

std::unordered_multiset<int> M;
M.insert(1);
M.insert(1);
M.insert(1);
std::cout<<M.count(1)<<std::endl;

M.erase(1);
std::cout << M.count(1) << std::endl;

Я ожидаю, что это напечатает 3 тогда 2. Но это печатает 3 тогда 0. Так как удалить только один элемент?

0

Решение

Вы можете использовать другой erase перегрузка:

std::unordered_multiset<int> s { 1, 2, 2, 3, 3, 3 };

const auto it = s.find(2);

if (it != s.end())
s.erase(it);

Живая версия

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]