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()
清空可重集,无返回值。