跳转至

multiset

约 132 个字 30 行代码 预计阅读时间 1 分钟

常用操作总结

操作 语法 复杂度 说明
插入 ​ms.insert(x)​ ​O(log n)​ 插入元素,自动排序
删除一个 ​ms.erase(ms.find(x))​ ​O(log n)​ 删除一个匹配的迭代器
删除所有x​ ​ms.erase(x)​ ​O(log n + count)​ 删除所有等于x​的元素
查找 ​ms.find(x)​ ​O(log n)​ 返回指向某个x​的迭代器
统计 ​ms.count(x)​ ​O(log n)​ 统计等于x​的元素个数
最小值 ​*ms.begin()​ ​O(1)​ 获取最小元素
最大值 ​*prev(ms.end())​ ​O(1)​ 获取最大元素
C++
#include <iostream>
#include <set>
using namespace std;

int main() {
    multiset<int> ms = {1, 2, 2, 3, 4};

    // 显示原始内容
    cout << "原始 multiset:";
    for (int x : ms) cout << x << " ";
    cout << endl;

    // 查找元素 2
    auto it = ms.find(2);  // 返回第一个等于 2 的迭代器

    if (it != ms.end()) {
        cout << "找到一个2,准备删除它。" << endl;
        ms.erase(it);  // 只删掉一个 2(注意不是所有)
    } else {
        cout << "没找到 2" << endl;
    }

    // 显示删除后的内容
    cout << "删除一个 2 后的 multiset:";
    for (int x : ms) cout << x << " ";
    cout << endl;

    return 0;
}