STL之set/multiset容器
1. set/multiset容器基本概念
1.1 set容器基本概念
set
的特性是。所有元素都会根据元素的键值自动被排序。set
的元素不像map
那样可以同时拥有实值和键值,set
的元素即是键值又是实值。set
不允许两个元素有相同的键值。
我们可以通过set
的迭代器改变set
元素的值吗?不行,因为set
元素值就是其键值,关系到set元素的排序规则。如果任意改变set
元素值,会严重破坏set组织。换句话说,set
的iterator
是一种const_iterator
.
set
拥有和list
某些相同的性质,当对容器中的元素进行插入操作或者删除操作的时候,操作之前所有的迭代器,在操作完成之后依然有效,被删除的那个元素的迭代器则是一个例外。
1.2 multiset容器基本概念
multiset
特性及用法和set
完全相同,唯一的差别在于它允许键值重复。set和multiset的底层实现是红黑树
.
2. set常用API
set构造函数:
set<T> st;//set默认构造函数:
mulitset<T> mst; //multiset默认构造函数:
set(const set &st);//拷贝构造函数
set赋值操作:
set& operator=(const set &st);//重载等号操作符
swap(st);//交换两个集合容器
set大小操作:
size();//返回容器中元素的数目
empty();//判断容器是否为空
set插入和删除操作:
insert(elem);//在容器中插入元素。
clear();//清除所有元素
erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。
erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(elem);//删除容器中值为elem的元素。