从 unordered_multiset 中仅删除一项
Remove only one item from 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。那么如何只删除一项?
您可以使用另一个 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);
我想从 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);