C++ 标准库类型 set
一、set 的使用与定义
1、使用 set 类型
标准库类型 set 就是数学上的集合。使用红黑树实现。
- 每个元素只出现一次
#include <set>
using std::set;
2、定义和初始化 set 对象
- set 是类模板,实例化时必须指定类型。
- 通常声明一个空的集合,之后再往里添加元素。
// 声明一个空的集合
set<int> s;
// 声明并初始化一个 set
set<int> s1({1,1,0});
二、set 对象操作
1、 set 类成员函数
begin(): 返回指向第一个元素的迭代器
clear():清除所有元素
count():返回某个值元素的个数
empty():如果集合为空,返回true
end():返回指向最后一个元素的迭代器
equal_range():返回集合中与给定值相等的上下限的两个迭代器
erase():删除集合中的元素
find():返回一个指向被查找到元素的迭代器
get_allocator():返回集合的分配器
insert():在集合中插入元素
lower_bound():返回指向大于(或等于)某值的第一个元素的迭代器
key_comp():返回一个用于元素间值比较的函数
max_size():返回集合能容纳的元素的最大限值
rbegin():返回指向集合中最后一个元素的反向迭代器
rend():返回指向集合中第一个元素的反向迭代器
size():集合中元素的数目
swap():交换两个集合变量
upper_bound():返回大于某个值元素的迭代器
value_comp():返回一个用于比较元素间的值的函数
2、实例
#include <set>
set<int> s;
// 插入insert()
s.insert(1)
// 删除erase()
s.erase(2)
// 查找find(),若找到返回该键值迭代器的位置,否则返回最后一个元素后面一个位置
it = s.find(3); //查找键值为5的元素
if (it != s.end()) //找到
cout << *it << endl;
else //未找到
cout << "no found";
// 计数count()
s.count(4)
// 集合大小size()
s.size()
// 遍历数据,用迭代器遍历数据
for (set<int>::iterator it = s.begin(); it != s.end(); ++it)
{
cout << *it << endl;
}
三、unordered_set 的使用与定义
1、使用 unordered_set 类型
与 set 类似。使用哈希表实现,内部元素是无序的。
#include <unordered_set>
2、定义和初始化 unordered_set 对象
// 声明一个空的 unordered_set
unordered_set<int> s;
// 声明并初始化一个 unordered_set
unordered_set<int> s1({1,1,0});