3

我想从 中删除特定元素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。那么如何只删除一项?

4

1 回答 1

11

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

现场版

于 2018-07-25T12:38:55.090 回答