一、基本概念
特点:1.所有元素在插入时会被自动被排序
2.属于关联式容器,底层结构是二叉树实现
3.不可插入重复的元素
4.需要加入头文件 (set)
二、构造与赋值
set <int> s;
//插入数据只有insert这个方法
s.insert(10);
s.insert(20);
set <int>a(s);
print(a);
set 会自动排序,且重复的数据会直接跳过
三、大小和交换
1. size ( ) 返回元素个数 (注意不支持 resize 重新指定大小)
2. empty ()判断是否为空
3. swap ()交换两个容器
if (s.empty())
cout << "s为空" << endl;
else
{
cout << "不为空"<<endl;
cout << "s 的大小为" << s.size() << endl;
}
四、插入与删除
set容器是先做好排序,再做删除的操作
像这个,就先排序,后删除
s.erase(s.begin());
//重载版本
s.erase(30);
//清空
s.clear();
五、查找和统计
1. find (key)查找key是否存在
若存在,返回该元素的迭代器(位置);若不存在,返回set.end()
2.count (key) 统计key的个数
(对于set而言,cout 的结果不是1就是0)
set <int> ::iterator pos = s.find(300);
if (pos != s.end())
{
cout << "找到元素" << *pos << endl;
}
else
cout << "没找到" << endl;
int num = s.count(30);
cout << "个数是" << num << endl;