C++ unordered_map用法总结

std::unordered_map 是 C++ 标准库中的一个哈希表实现的关联容器,用于存储键-值对,提供了快速的查找、插入和删除操作。以下是 std::unordered_map 的详细用法总结:

包含头文件:

#include <unordered_map>

创建 std::unordered_map 对象:

std::unordered_map<KeyType, ValueType> myMap;
  • KeyType 是键的类型,可以是基本数据类型或自定义类型。
  • ValueType 是值的类型,可以是基本数据类型或自定义类型。

插入元素:

myMap[key] = value;
myMap.insert(std::make_pair(key, value));

访问元素:

value = myMap[key];

查找元素:

auto it = myMap.find(key);

if (it != myMap.end()) {
   
    // 元素找到
    value = it->second;
} else {
   
    // 元素未找到
    // 处理不存在的情况
}

删除元素:

myMap.erase(key);

遍历 std::unordered_map

for (auto& pair : myMap) {
   
    // pair.first 是键
    // pair.second 是值
    std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}

获取大小:

size_t size = myMap.size();

检查是否为空:

bool isEmpty = myMap.empty();

注意事项:

  1. std::unordered_map 不保证元素的顺序,是无序的。

  2. 对于自定义类型的键,需要提供哈希函数和相等比较函数。可以通过提供自定义的 std::hashstd::equal_to 来实现。

    namespace std {
         
        template<> struct hash<MyCustomType> {
         
            size_t operator()(const MyCustomType& obj) const {
         
                // 返回计算得到的哈希值
            }
        };
    }
    

示例:

#include <iostream>
#include <unordered_map>

int main() {
   
    std::unordered_map<std::string, int> myMap;

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

    // 访问元素
    std::cout << "Value for key 'two': " << myMap["two"] << std::endl;

    // 查找元素
    auto it = myMap.find("four");
    if (it != myMap.end()) {
   
        std::cout << "Value for key 'four': " << it->second << std::endl;
    } else {
   
        std::cout << "Key 'four' not found." << std::endl;
    }

    // 删除元素
    myMap.erase("three");

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

    return 0;
}

这是一个简单的使用 std::unordered_map 的例子,你可以根据具体的需求进行进一步的使用和定制。

相关推荐

  1. git stash 用法总结

    2024-01-08 02:22:06       58 阅读
  2. C++ set用法总结

    2024-01-08 02:22:06       59 阅读
  3. C++ stack用法总结

    2024-01-08 02:22:06       66 阅读
  4. C++ unordered_map用法总结

    2024-01-08 02:22:06       54 阅读
  5. sql总结(高阶用法

    2024-01-08 02:22:06       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 02:22:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 02:22:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 02:22:06       87 阅读
  4. Python语言-面向对象

    2024-01-08 02:22:06       96 阅读

热门阅读

  1. spring之事务工作原理

    2024-01-08 02:22:06       56 阅读
  2. SpringCloud学习

    2024-01-08 02:22:06       62 阅读
  3. 基于Matlab的车道线检测技术研究与实现

    2024-01-08 02:22:06       62 阅读
  4. <设计模式> 七大原则

    2024-01-08 02:22:06       48 阅读
  5. Linux中MySQL的增删改查

    2024-01-08 02:22:06       54 阅读
  6. python代码大全(持续更新)

    2024-01-08 02:22:06       62 阅读
  7. springcloud之Feign超时提示Read timed out executing POST

    2024-01-08 02:22:06       60 阅读
  8. 【PostgreSQL的WAL日志解析工具pg_waldump/pg_xlogdump】

    2024-01-08 02:22:06       42 阅读
  9. 知识产权贯标和注册商标有什么区别

    2024-01-08 02:22:06       58 阅读
  10. 【LeetCode】1251. 平均售价

    2024-01-08 02:22:06       54 阅读