AcWing 840. 模拟散列表
原题链接
简单
Set容器详解
在c++标准中,set容器的底层实现是红黑树二叉树,集合中的元素默认是升序。
但是c++编译器提供了底层实现是哈希表的set容器,即hash_set。
hash_set的基本操作和set差不多
在使用Gun编译器时,hash_set的命名空间是__gnu_cxx 头文件是 hash_set
如果集合存放的是自定义数据结构,这些数据结构必须重写比较运算符
构造和赋值
// set的英文含义就是集合,既然是集合,那么就不允许含有重复的元素
set<int> sa;
// multiset 是可以允许含有重复的元素,底层实现是红黑树
multiset<int> sc;
//底层实现为哈希表的set
hash_set<int> sb;
//拷贝构造
set<int> s1(s2);
//赋值,将容器s3中的元素赋值到容器s1中。
s1=s3;
大小和交换
s1.size();
s1.empty();
s1.swap(s2); //交换s1和s2容器中的元素
插入和删除
//插入操作,基于红黑树的集合容器会自动升序
s1.insert(x);
//删除操作
s1.erase(x);//删除值为x的元素
s1.erase(iter); //删除迭代器指向的元素
s1.erase(begin, end)// 删除迭代器范围内的元素,end指向的元素不会删除
//清空
s1.clear();
查找和统计
//查找,找到将返回目标元素的迭代器,没有找到则返回s1.end()
s1.find(x);
//统计,统计元素的数量
s1.count(x);