set中存储的数据不允许重复。其头文件为 <set>,需要添加std命名空间。
函数声明 | 返回值说明 | 功能说明 |
pair<set<type>::iterator, bool> = insert(val) | pair,first:迭代器位置,second:是否成功 | 插入 |
pair<set<type>::iterator, bool> = emplace(val) | pair,first:迭代器位置,second:是否成功 | 高效插入。 如果是对象类型,则参数列表为对应构造器参数列表 |
erase(it) | 无 | 按迭代器删除 |
int t = erase(val) | 删除的个数 | 按值删除 |
erase(it1, it2) | 无 | 按迭代器区间删除 |
clear() | 无 | 清空 |
swap(s) | 无 | 交换两个set |
set<type>::iterator it = s.find(val) | val所在迭代器位置,无则为end() | 查询val所在位置 |
int cnt = s.count(val) | val的个数,0 or 1 | 查询val的数量 |
int sSize = s.size() | 元素个数 | 查询set中元素个数 |
int maxSize = s.max_size() | 最大可存储元素个数 | 查询set中最大可存储元素个数 |
set<type>::iterator it = s.lower_bound(val) | 第一个小于或等于val的迭代器 | val的左区间,包括val |
set<type>::iterator it = s.upper_bound(val) | 第一个大于val的迭代器 | val的右区间,不包括val |
pair<set<int>::iterator,set<int>::iterator> ret = s.equal_range(val) | p.first = s.lower_bound(val); p.second = s.upper_bound(val); | 于等于val到大于val的迭代器区间 该范围内最多包含一个元素(注意前闭后开) |
pair<set<type>::iterator, bool> ret = s.insert(val);
// 功能同insert 当type为对象时 emplace参数为构造函数中的参数列表
// 其比insert的好处在于 可以避免不必要的临时变量构造
pair<set<type>::iterator, bool> ret = s.emplace(val);
ret.first; // 对应插入位置迭代器
ret.second; // 是否插入成功 即是否重复插入
s.erase(it); // 按迭代器删除
s.erase(val); // 按值删除
s.erase(it1, it2); // 按迭代器区间删除
s.clear(); // 清空
s1.swap(s2); // 交换两个set
set<type>::iterator it = s.find(val);
if (it == s.end()) => {"not found"};
// set中val的个数 0或1
int cnt = s.count(val);
int sSize = s.size();
// 最大能存储的数据个数
int maxSize = s.max_size();
// 第一个小于或等于val的迭代器
set<type>::iterator it = s.lower_bound(val);
// 第一个大于val的迭代器
set<type>::iterator it = s.upper_bound(val);
// 小于等于val到大于val的迭代器区间 该范围内最多包含一个元素(注意前闭后开)
pair<set<int>::iterator,set<int>::iterator> ret = s.equal_range(val);
p.first = s.lower_bound(val);
p.second = s.upper_bound(val);