1.set基本概念
简介:所有元素都会在插入时自动被排序
本质:set/multiset属于关联式容器,底层结构是用二叉树实现
set和multiset区别:
set不允许容器中有重复的元素
multiset允许容器中有重复的元素
2.set构造和赋值
功能描述: 创建set容器以及赋值
构造:
set<T> st;//默认构造函数:
set(const set &st);//拷贝构造函数
赋值:
set& operator=(const set &st);//重载等号操作符
set<int>s1;
//插入数据 只有insert方式
s1.insert(10);
//set容器特点:所有元素插入时候自动会被排序
//set容器不允许插入重复值
//拷贝构造
set<int>s2(s1);
//赋值
set<int>s3;
s3 = s2;
总结:
set容器插入数据时用insert
set容器插入数据的数据会自动排序
2. set大小和交换
功能描述:
*统计set容器大小以及交换set容器
函数原型:
1.size(); //返回容器中元素的数目
2.empty(); //判断容器是否为空
3.swap(st);//交换两个集合容器
//因为set不允许重复值存在,所以set没有提供重新指定大小的函数(因为重新指定大小默认用0填充)
set<int>s1;
//插入数据
s1.insert(10);
s1.insert(20)
//判断是否为空
if (s1.empty())
{}
//容器元素的数目
s1.size()
//交换
s1.swap(s2);
总结:
* 统计大小 --size
* 判断是否为空 --empty
* 交换容器 --swap
3.set插入和删除
功能描述:
set容器进行插入数据和删除数据
函数原型:
1.insert(elem); //在容器中插入元素
2. clear(); //清除所有元素
3. erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器
4. erase(beg, end);//删除区间[beg,end)的所有元素,返回下一个元素的迭代器
5. erase(elem); //删除容器中值为elem的元素。
set<int>s1;
//1.插入
s1.insert(30);
s1.insert(10);
//3.删除
s1.erase(s1.begin());//删除第一个
//这里删除的是10,因为set会自动排序
//5.删除重载版本
s1.erase(30);//给谁删谁
//删除区间
s1.erase(s1.begin(), s1.end());
//2.清空
s1.clear();//自带的清空接口
总结:
* 插入 --insert
* 删除 --erase
* 清空 --clear
仅个人看视频笔记与理解,如有误可指出谢谢