【C++】【数据结构】【API列表】标准库数据结构
标准库数据结构
unordered_set
头文件:#include <unordered_set>
特性:
- 唯一性:所有元素唯一,重复插入无效
- 无序性:元素存储顺序不固定
- 自定义类型:若存储自定义类型需提供哈希函数和相等比较器
成员函数:
-  基本操作函数-  构造函数 - unordered_set<T>():创建空容器
- unordered_set<T>(initializer_list):通过初始化列表构造(如{1, 2, 3})
- unordered_set<T>(size_type n):指定初始桶数量构造
 
- 
-  插入元素 - insert(const T& value):插入单个元素(若已存在则不插入)
- insert(initializer_list):插入多个元素
- emplace(args...):原地构造元素插入,效率高于insert
 
- 
 
-  
-  查找与统计-  查找元素 - find(const T& key):返回指向元素的迭代器,若未找到则返回end()
- count(const T& key):返回元素存在次数(0或1)
 
- 
-  范围查找 - equal_range(key):返回包含匹配元素的迭代器范围(pair<iterator, iterator>)
 
- 
 
-  
-  删除元素- erase(const T& key):删除指定元素
- erase(iterator pos):通过迭代器删除指定位置元素
- clear():清空所有元素
 
- 
-  容量与状态- size():返回当前元素数量
- empty():判断容器是否为空
- max_size():返回容器最大可能容纳元素数量
- load_factor():返回当前负载因子(元素数/桶数)
- max_load_factor():获取或设置最大负载因子阈值
 
- 
-  哈希与桶管理-  哈希函数 - hash_function():返回容器使用的哈希函数对象
 
- 
-  桶操作 - bucket_count():返回当前桶的总数
- bucket(key):返回元素所在的桶编号
- bucket_size(n):返回第n个桶中的元素数量
- rehash(n):调整桶数量为n并重新分布元素
- reserve(n):预分配至少容纳n个元素的桶
 
- 
 
-  
-  迭代器相关- begin() /end():正向迭代器,用于遍历元素
- cbegin() /cend():常量正向迭代器
 
- 
unordered_map<K, V>
头文件:#include <unordered_map>
特性:
- 键唯一性:每个键唯一,重复插入会覆盖旧值
- 无序性:元素存储顺序由哈希函数决定,不可预测
- 自定义键类型:需提供哈希函数(通过特化std::hash)和相等比较器(operator==)
- 性能优化:预分配桶(reserve())或调整负载因子可减少哈希冲突
成员函数:
-  基本操作函数-  构造函数 - unordered_map<Key, T>():创建空容器
- unordered_map<Key, T>(initializer_list):通过初始化列表构造键值对(如{{"apple", 1}, {"banana", 2}})
- unordered_map<Key, T>(size_type n):指定初始桶数量构造
 
- 
-  插入元素 - insert(const pair<Key, T>& kv):插入单个键值对(若键存在则不插入)
- emplace(Key k, T v):原地构造键值对插入,避免拷贝开销,效率更高
- operator[]:通过键直接插入或修改值(若键不存在则创建默认值)
- insert_or_assign(Key k, T v):若键存在则覆盖旧值,否则插入新键值对(C++17引入)
 
- 
 
-  
-  查找与访问-  键值访问 - at(Key k):返回键对应的值,若键不存在抛出std::out_of_range异常
- operator[]:通过键访问值,若键不存在则插入默认值
 
- 
-  查找操作 - find(Key k):返回指向键值对的迭代器,未找到则返回end()
- count(Key k):返回键存在的次数(0或1)
- contains(Key k):C++20引入,直接返回布尔值表示键是否存在
 
- 
 
-  
-  删除与清空- erase(Key k):删除指定键的键值对,返回删除数量(0或1)
- erase(iterator pos):通过迭代器删除指定位置的键值对
- clear():清空所有元素
 
- 
-  容量与状态- size():返回当前元素数量
- empty():判断容器是否为空
- max_size():返回容器可容纳的最大元素数量(受系统限制)
- load_factor():返回当前负载因子(元素数/桶数)
- max_load_factor():获取或设置最大负载因子阈值(触发扩容的阈值)
 
- 
-  哈希与桶管理-  哈希函数与桶操作 - hash_function():返回容器使用的哈希函数对象
- bucket_count():返回当前桶的总数
- bucket(Key k):返回键所在桶的编号
- bucket_size(n):返回第n个桶中的元素数量
- rehash(n):调整桶数量为n并重新分布元素
- reserve(n):预分配至少容纳n个元素的桶,避免多次扩容
 
- 
 
-  
-  迭代器相关- begin() /end():正向迭代器,用于遍历键值对
- cbegin() /cend():常量正向迭代器
 
- 
