multiset 总结

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) 的元素所代表的迭代器,没有的话返回 (elem)
  • 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() 清空可重集,无返回值。
原文地址:https://www.cnblogs.com/TianMeng-hyl/p/15176328.html