一、核心区别

容器 存储结构 用途
unordered_set<T> 只存值 去重、快速判断元素是否存在
unordered_map<K,V> 键值对 key→value 计数、映射、存对应关系

共同点:哈希实现,查找 O (1),内部无序

二、unordered_set 常用函数

unordered_set<int> s;


1.插入

s.insert(x); 插入元素,自动去重

2.查找(高频)

s.count(x); 存在返回 1,不存在返回 0

auto it = s.find(x); 找到返回迭代器,没找到返回s.end()

3.删除

s.erase(x); 删除元素 x

s.clear(); 清空全部

4.大小 / 判空

s.size(); 元素个数

s.empty(); 是否为空

5.遍历

for(auto& x : s) {}


三、unordered_map 常用函数

unordered_map<char, int> mp;


1.插入 / 赋值(2 种)

mp[key] = val; 最常用,key 不存在则自动创建

mp.insert({key, val}); 插入键值对

2.查找(高频)

mp.count(key); 判断 key 是否存在,返回 0/1

auto it = mp.find(key); 找 key 的迭代器

3.取值

mp[key]; 直接取 value(key 不存在会默认创建)

it->first 取 key;it->second 取 value

4.删除

mp.erase(key); 删除对应键值对

mp.clear(); 清空

5.大小 / 判空

mp.size();

mp.empty();

6.遍历

for(auto& p : mp) { p.first; p.second; }


四、刷题核心口诀

  1. 只查有没有、去重 → 用 unordered_set
  2. 需要计数、存对应关系 → 用 unordered_map
  3. count 只能返回 0/1,unordered_map 统计次数直接用mp[key]++
  4. 两者都无序,不能依赖遍历顺序
  5. 查找优先用count,取值优先用[]

更多推荐