持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
1.1 set插入和删除
功能描述:
- set容器进行插入数据和删除数据
1.2 函数原型:
insert(elem);//在容器中插入元素。clear();//清除所有元素erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。erase(elem);//删除容器中值为elem的元素。
1.3 代码示例:
#include <set>
void printSet(set<int> & s)
{
for (set<int>::iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
//插入和删除
void test01()
{
set<int> s1;
//插入
s1.insert(10);
s1.insert(30);
s1.insert(20);
s1.insert(40);
printSet(s1);
//删除
s1.erase(s1.begin());
printSet(s1);
s1.erase(30);
printSet(s1);
//清空
//s1.erase(s1.begin(), s1.end());
s1.clear();
printSet(s1);
}
int main() {
test01();
system("pause");
return 0;
}
1.4 总结:
- 插入 --- insert
- 删除 --- erase
- 清空 --- clear
1.5 set概述
1.set的作用
set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作。
2.set的定义
set<储存的类型> 容器名
如:
储存int型的值 set s;
储存double型的值 set s;
储存string型的值 set s;
储存结构体或者类的值的值 set<结构体名> s;
set的一些基本的成员函数
**set的两种遍历方法**
迭代器iterator
set有一个很重要的特性,那就是自动升序排序,在很多场景可以方便使用,那么当需要降序排序的时候需要怎样呢?
1、逆向思维
从end()-1到begin()遍历就是降序的了
2.rbegin()和rend()
逆向迭代器本来就是实现逆向迭代的功能的
auto用法,c++auto用法强大,当你无法确定变量的类型时,都可以用auto来代替,迭代器iterator很难记住,其实可以用auto来代替
对于set这个容器,存储的是自动排序的独特元素。也就是说,在这个容器中,所有的元素都是唯一的。
set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。set不允许两个元素有相同的键值。所以set可以理解成一个特殊的map,底层跟map一样用的也是红黑树,它的很多成员函数也跟map非常相似。
查找效率也和map一样,都是O(log n)。