STL之set,multiset
- 头文件及声明
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace std
{
template <typename T,
typename Compare = less<T>,
typename Allocator = allocator<T>>
class set;
template <typename T,
typename Compare = less<T>,
typename Allocator = allocator<T>>
class multiset;
}
- 内部结构及其特性
内部结构用红黑树实现,set和multiset并不提供直接的元素存取,而是要用迭代器。迭代器是双向迭代器。
创建时必须传入一个比较准则,若无则用less<T>
,可以在模板参数的时候传入,也可以作为一个构造函数的参数传入。
注意set的insert(val)
返回的是一个pair类型的值,pair<iterator, bool>
来指示是否插入成功。而multiset只返回迭代器,因为set内不允许重复值出现。