unordered_map api 介绍

unordered_map 是 C++ STL 中的一个容器,它提供了一个基于键-值对的无序集合。它是以哈希表的形式实现的,因此插入、删除和查找元素的时间复杂度都是 O(1)。

unordered_map的API包括以下几个重要的函数:

  1. insert(key, value):向unordered_map中插入一个键值对。
  2. erase(key):从unordered_map中删除指定的键值对。
  3. find(key):在unordered_map中查找指定的键,并返回指向对应值的迭代器。
  4. count(key):返回unordered_map中指定键的数量,通常用于判断某个键是否存在。
  5. size():返回unordered_map中键值对的数量。
  6. empty():判断unordered_map是否为空。
  7. clear():清空unordered_map中的所有键值对。
  8. begin()和end():返回指向unordered_map中第一个键值对和最后一个键值对之后的迭代器,用于遍历unordered_map中的所有键值对。
  9. operator[]:重载了[]操作符,可以通过键访问对应的值,如果键不存在则会插入一个默认的值。

需要注意的是,unordered_map中的键是唯一的,如果插入了重复的键,则旧的键值对会被新的键值对替代。另外,unordered_map不保证元素的顺序,键值对在内部存储时会根据哈希值进行随机排序。如果需要按照特定的顺序访问键值对,可以考虑使用std::map。

unordered_map 提供的主要 API 的详细介绍:

  1. 构造函数

    • unordered_map(): 构造一个空的 unordered_map。
    • unordered_map(size_type n): 构造一个具有 n 个桶的 unordered_map。
    • unordered_map(size_type n, const hasher& hf, const key_equal& eql): 构造一个具有 n 个桶,并使用指定的哈希函数 hf 和键相等函数 eql 的 unordered_map。
    • unordered_map(const unordered_map& other): 构造一个 unordered_map,其中包含其他 unordered_map 的副本。
  2. 迭代器

    • begin(): 返回指向容器中第一个元素的迭代器。
    • end(): 返回指向容器中最后一个元素之后位置的迭代器。
    • cbegin(): 返回指向容器中第一个元素的常量迭代器。
    • cend(): 返回指向容器中最后一个元素之后位置的常量迭代器。
  3. 容量

    • empty(): 检查容器是否为空,如果为空则返回 true,否则返回 false。
    • size(): 返回容器中元素的个数。
    • max_size(): 返回容器能容纳的最大元素个数。
  4. 修改器

    • insert(const value_type& val): 在容器中插入一个键-值对 val。
    • erase(const key_type& k): 删除容器中键为 k 的键-值对。
    • clear(): 清空容器中的所有键-值对。
    • swap(unordered_map& other): 交换两个 unordered_map 容器的内容。
  5. 查找和访问元素

    • at(const key_type& k): 返回容器中键为 k 的值,如果 k 不存在,则抛出一个 out_of_range 异常。
    • operator[](const key_type& k): 返回容器中键为 k 的值的引用,如果 k 不存在,则插入一个新的键-值对并返回该值的引用。
    • find(const key_type& k): 查找容器中键为 k 的键-值对,并返回一个指向该键-值对的迭代器,如果 k 不存在,则返回 end()。
    • count(const key_type& k): 返回容器中键为 k 的键-值对的个数,要么是 0(不存在),要么是 1(存在)。
    • erase(iterator position): 删除容器中迭代器 position 指向的键-值对。
    • erase(iterator first, iterator last): 删除容器中位于区间 [first, last) 内的所有键-值对。

unordered_map是C++标准库中的一种容器,它提供了一种将键值对映射关系保存在一个无序集合中的方式。unordered_map使用哈希表来实现,因此插入、删除和查找操作的平均时间复杂度为常数O(1)。

unordered_map的使用方法如下:

  1. 引入头文件
#include 
  1. 创建unordered_map对象
std::unordered_map myMap;

其中,Key和Value分别表示键和值的类型。

  1. 插入元素
myMap.insert(std::make_pair(key, value));

或者使用下标操作符

myMap[key] = value;
  1. 访问元素
Value value = myMap[key];
  1. 删除元素
myMap.erase(key);
  1. 查找元素
auto it = myMap.find(key);
if (it != myMap.end()) {
    // 找到了
} else {
    // 没找到
}
  1. 遍历元素
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    Key key = it->first;
    Value value = it->second;
    // 处理键值对
}

unordered_map还提供了其他一些成员函数和操作符,如size()、empty()、clear()、桶相关的函数和哈希函数相关的函数,以及与其他容器的比较和交换等。上述是其中的一些主要的 API,可以根据具体的需求选择合适的函数来使用。

你可能感兴趣的:(unordered_map api 介绍)