📜  C++标准模板库(STL)中的多集(1)

📅  最后修改于: 2023-12-03 14:59:52.064000             🧑  作者: Mango

C++标准模板库(STL)中的多集

在C++的STL(标准模板库)中,有一个常用到的数据结构叫做“多集”。本文将介绍多集的定义、特点以及使用方法。

定义

多集即多重集合,也称为“袋子”。与普通集合不同的是,多重集合中的元素可以重复出现。STL中提供了多集的实现,即multiset类。

#include <iostream>
#include <set>
using namespace std;

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

    for (auto it = s.begin(); it != s.end(); it++)
    {
        cout << *it << " ";
    }
    //输出结果为:1 2 2 3 4
    return 0;
}
特点
  • 多集中的元素不会按照插入顺序排列,而是按照元素大小自动排序。
  • 多集中可以存储相同的元素。
  • 多集中的元素是无序的,不能通过下标访问。
常用方法
插入元素

可以使用insert()方法向多集中插入元素。

multiset<int> s;
s.insert(1);
s.insert(2);
s.insert(2);
s.insert(3);
s.insert(4);
查询元素

可以使用count()方法查询元素在多集中出现的次数。

multiset<int> s = {1, 2, 3, 2, 4};
cout << s.count(2);  //输出结果为:2
删除元素

可以使用erase()方法删除多集中的某一个或者一组元素。

multiset<int> s = {1, 2, 3, 2, 4};
s.erase(2); //删除一个2
s.erase(s.find(2), s.find(3)); //删除一组2和3
清空多集

可以使用clear()方法清空多集中的所有元素。

multiset<int> s = {1, 2, 3, 2, 4};
s.clear(); //清空多集s
总结

多集是一种可以存储相同元素且无序的数据结构,STL中提供了multiset类来实现这种数据结构。多集可以使用insert()方法插入元素,使用count()方法查询元素出现次数,使用erase()方法删除元素,使用clear()方法清空多集。由于多集不支持下标访问和随机遍历,通常使用迭代器遍历多集中的元素。