如何删除 `multiset` 中的重复值的一个实例
在 C++ 中,std::multiset
容器允许存储多个相同的元素(即重复元素)。
要删除 multiset
中的某个值的一个实例,而不是删除所有相同的值,可以使用 erase()
方法的迭代器版本,该版本允许精确地删除某个位置的元素。
语法:
multiset.erase(iterator);
示例:
#include <iostream>
#include <set>
int main() {
// 创建一个 multiset,并插入一些重复元素
std::multiset<int> ms = {10, 20, 20, 30, 30, 30};
// 打印 multiset 内容
std::cout << "Original multiset: ";
for (const auto& elem : ms) {
std::cout << elem << " ";
}
std::cout << std::endl;
// 查找要删除的某个值(20)的迭代器
auto it = ms.find(20); // 只找到第一个 20 的位置
// 删除该位置的元素(即删除一个 20)
if (it != ms.end()) {
ms.erase(it); // 删除第一个找到的 20
}
// 打印删除后的 multiset 内容
std::cout << "After erasing one '20': ";
for (const auto& elem : ms) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
输出:
Original multiset: 10 20 20 30 30 30
After erasing one '20': 10 20 30 30 30
解释:
ms.find(20)
返回multiset
中第一个20
的迭代器。ms.erase(it)
删除该位置的元素,只删除了一个20
。
注意:
erase(iterator)
删除迭代器指向的元素,并且不会删除其他相同的值。- 如果想删除所有相同的元素,可以使用
ms.erase(value)
,但这会删除所有匹配的元素。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?