Loading

multiset 总结

1 简介

multiset 是一个非常好用的 STL,简单来说就是一个可重集,可以允许序列重复。

2 声明

像其他所有 STL 一样,multiset 的声明是这样的:multiset<T> c,c1,c2;

其中 \(T\) 是一个类型,如果是结构体的话需要重载小于号。

3 操作

3.1 非变动性操作

  • c.size() 返回集合元素大小。
  • c.empty() 返回集合是否为空,为空的话返回 \(1\) ,否则返回 \(0\)​ 。
  • c.max_size() 返回能容纳的元素最大数量。
  • c1==c2 判断两个可重集是否相等。

同样,可重集之间还支持判断小于等于,大于等比较操作,这里不一一展开。

两个可重集的比较类似于两个 string 类型的比较。

3.2 查找函数

  • c.count(T elem) 返回元素 \(elem\) 的个数。
  • c.find(T elem) 返回元素值为 \(elem\) 的第一个元素所代表的迭代器,如果没有返回 end()
  • c.lower_bound(T elem),c.upper_bound(T elem) 返回第一个大于等于,大于 \(elem\) 的元素所代表的迭代器,没有的话返回 end()
  • c.equal_range(T elem) 返回一对 pair 类型的迭代器,表示元素值所在区间。

3.3 赋值函数

  • c1=c2\(c1\) 清空。将 \(c2\) 的元素全部给 \(c1\)
  • c1.swap(c2)\(c1,c2\) 元素互换。
  • swap(c1,c2) 同上。

3.4 迭代器相关函数

  • c.begin() 返回第一个元素所代表的迭代器。
  • c.end() 返回最后一个元素的下一个位置所代表的迭代器。
  • c.rbegin() 返回最后一个元素所代表的迭代器。
  • c.rend() 返回第一个元素前面一个位置所代表的的迭代器。

3.5 插入删除函数

注意,这里必须保证参数是合法参数。

  • c.insert(T elem) 插入元素 \(elem\) ,返回元素位置所代表的迭代器。
  • c.insert(beg,end) 插入一段区间 \([beg,end)\) 中的元素,无返回值。
  • c.erase(T elem) 删除与 \(elem\)​ 相等的所有元素,返回被删除元素个数。
  • c.erase(pos) 删除迭代器 \(pos\)​ 所代表的位置上的元素,无返回值。
  • c.erase(beg,end) 删除区间 \([beg,end)\)​ 之间的所有元素,无返回值。
  • c.clear() 清空可重集,无返回值。
posted @ 2021-08-23 16:04  hyl天梦  阅读(360)  评论(0编辑  收藏  举报