目录
我们都知道,set是STL里的一种数据结构,这篇博客就是set用法的详解。
1.set的创建。
set初始化一般是
set<数据结构名称> 名字;
具体例子:
创建一个int型,名称是s的set。
set<int> s;
set还可以创建STL里的数据结构(包括自己)
set<pair<int,int>> s;
set<set<int>> s;
set初始化:
再创建时,可以对set进行初始化。
set<int> s={1,3,6,4};
这样就给s的初始化成{1,3,6,4}
2.set的特性。
set特性有两点:
- 会自动排序。
- 会自动去重。
- 底层使用红黑树实现
3.set元素遍历:
set不能用下标访问,只能用迭代器访问。
迭代器创建:
例如创造set<int> 的迭代器:
set<int>::iterator it;
这样就成功的创建了set<int> 的迭代器,名子是it。
遍历set<int> s;的所有元素:
for(it=s.begin();it!=s.end();it++)
{
}
用*it来访问当前的元素。
示例:
#include<bits/stdc++.h>
using namespace std;
int main()
{
set<int> s={1,2,3,4};
set<int>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
cout<<*it<<' ';
}
return 0;
}
结果如下:
如果你很懒,那么还有一种方式很适合你:
#include<bits/stdc++.h>
using namespace std;
int main()
{
set<int> s={1,2,3,4};
for(auto it:s)
{
cout<<it;
}
return 0;
}
注意:这里是用it,不是*it。
结果如下 :
当题目卡常时:不建议用auto,用迭代器。
4.set的基本函数。
这里会讲:insert(),clear(),find(),erase(),count(),size(),empty(),lower_bound(),upper_bound()。
4.1.insert()
先来看一下STL底层的实