头文件:
#include <set>
集合和多重集合的唯一区别:多重集合可以包含重复元素,集合不可以包含重复元素。
构造方法
- ctType<type> ct 创建空集合 <
- ctType<type,sort> ct 创建自定义排序方式的空集合
- ctType<type> ct(otherCt) 用另外的集合 创建集合 <
- ctType<type,sort> ct(otherCt) 用另外的集合创建自定义排序方式的集合
- ctType<type> ct(beg,end) 用另外的集合 创建集合 < ,从beg 到end + 1
- ctType<type,sort> ct(beg,end) 用另外的集合创建自定义排序方式的集合,从beg 到end + 1
示例:
set intSet; set> otherIntSet; multiset stringMultiSet; multiset > otherStringMultiset;
操作:
- ct.insert(elem) 插入元素,返回是否成功
- ct.insert(pos,elem) 从某个位置开始搜索插入,返回插入的位置
- ct.insert(beg,end) 将beg到end-1的所有元素插入到ct中
- ct.erase(elem) 删除元素,返回删除的个数
- ct.erase(pos) 删除指定位置上的元素,不返回任何值
- ct.erase(beg,end) 删除一段位置的值,不返回任何值
- ct.clear() 清空集合
示例代码:
#include运行结果:#include
#include #include #include #include using namespace std;int main() { set intSet; // 集合 升序 set > intSetA;// 集合 降序 set >::iterator intSetAIt;// 迭代器 ostream_iterator screen(cout," ");// 输出迭代器 // intSet 添加元素 intSet.insert(16); intSet.insert(8); intSet.insert(20); intSet.insert(3); cout << "intSet :" << endl; copy(intSet.begin(),intSet.end(),screen); cout<< endl; // intSetA 添加元素 intSetA.insert(36); intSetA.insert(84); intSetA.insert(30); intSetA.insert(39); intSetA.insert(59); intSetA.insert(238); intSetA.insert(156); intSetA.insert(156); //重复插入 cout << "intSetA :" << endl; copy(intSetA.begin(),intSetA.end(),screen); cout << endl; // 擦除元素 intSetAIt = intSetA.begin(); ++intSetAIt; ++intSetAIt; ++intSetAIt; intSetA.erase(intSetAIt); cout << "intSetA.erase:" << endl; copy(intSetA.begin(),intSetA.end(),screen); cout << endl; set >intSetB(intSetA); cout << "intSetB :" << endl; copy(intSetB.begin(),intSetB.end(),screen); cout << endl; intSetB.clear(); cout << "intSetB.clear :" << endl; copy(intSetB.begin(),intSetB.end(),screen); cout << endl; // 定义多重集合 multiset > namesMultiSet; multiset >::iterator iter; ostream_iterator pScreen(cout," "); namesMultiSet.insert("Donny"); namesMultiSet.insert("Zippy"); namesMultiSet.insert("Goofy"); namesMultiSet.insert("Hungry"); namesMultiSet.insert("Goofy"); namesMultiSet.insert("Donny"); cout << "namesMultiSet:" << endl; copy(namesMultiSet.begin(),namesMultiSet.end(),pScreen); cout <
intSet :
3 8 16 20 intSetA : 238 156 84 59 39 36 30 intSetA.erase: 238 156 84 39 36 30 intSetB : 238 156 84 39 36 30 intSetB.clear : namesMultiSet: Zippy Hungry Goofy Goofy Donny Donny