欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

unordered_map

时间:2024-05-11 14:43 作者:admin 点击:
unordered_map 是 C++ 标准模板库(STL)中的一个关联容器,它使用哈希表来存储键值对。与 map 不同, unordered_map 不保证元素的顺序,其元素的迭代顺序可能会在每次插入或删除操作后改变

unordered_map 是 C++ 标准模板库(STL)中的一个关联容器,它使用哈希表来存储键值对。与 map 不同,unordered_map 不保证元素的顺序,其元素的迭代顺序可能会在每次插入或删除操作后改变。以下是 unordered_map 的一些关键特性和操作:

  1. 基于哈希:unordered_map 使用哈希表来存储元素,这意味着它通过哈希函数将键映射到哈希表中的一个位置。
  2. 键的唯一性:每个键在 unordered_map 中必须是唯一的。
  3. 快速访问:提供平均时间复杂度为 O(1) 的查找、插入和删除操作。
  4. 迭代器:unordered_map 提供了迭代器,可以遍历所有元素。
  5. 构造与初始化:可以默认构造一个空的 unordered_map,也可以通过初始化列表或范围来初始化它。
  6. 大小操作:可以查询 unordered_map 的大小,即它包含的键值对数量。
  7. 插入操作:可以插入一个键值对,或者通过范围来插入多个键值对。
  8. 删除操作:可以根据键或者迭代器来删除元素。
  9. 查找操作:可以使用键来查找对应的值,返回的是对应键值对的迭代器。
  10. 哈希函数和键比较函数:unordered_map 使用用户提供的哈希函数和键比较函数来管理元素。

下面是一个简单的 unordered_map 使用示例:

#include <iostream>
#include <unordered_map>

int main() {
    // 创建一个 unordered_map
    std::unordered_map<int, std::string> um;

    // 插入元素
    um[1] = "one";
    um[2] = "two";
    um[3] = "three";

    // 遍历 unordered_map
    for (const auto& pair : um) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    // 根据键查找元素
    auto it = um.find(2);
    if (it != um.end()) {
        std::cout << "Found: " << it->second << std::endl;
    }

    // 删除一个元素
    um.erase(it);

    // 根据键删除元素
    um.erase(1);

    return 0;
}

请注意,unordered_map 的性能很大程度上依赖于哈希函数的质量。一个好的哈希函数可以均匀地分布键,减少哈希冲突,从而提高性能。此外,unordered_map 不保证元素的迭代顺序,因此如果你需要元素的特定顺序,应该使用 map 而不是 unordered_map


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%