仅从无序集合中删除一个项目

Remove only one item from unordered_multiset

本文关键字:一个 项目 删除 无序 集合      更新时间:2023-10-16

我想从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。那么如何只删除一个项目呢?

您可以使用另一个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);

实时版本

相关文章: