holyya.com
2025-09-04 13:02:31 Thursday
登录
文章检索 我的文章 写文章
C++的unordered_map使用指南
2023-06-30 04:59:38 深夜i     --     --
C++ unordered_map 使用指南 哈希表 键值对

C++语言为程序员提供了许多有用的工具,如unordered_map容器,可以帮助我们更快地处理数据和实现算法。在本篇文章中,我们将介绍C++的unordered_map容器的使用指南。

1. 什么是unordered_map?

unordered_map是C++标准库中的一个关联容器,它通过哈希表实现,在插入和查找方面具有非常高的效率。与std::map不同,std::unordered_map不会按照键值来进行排序,而是根据哈希值来进行关键字的查找。

2. unordered_map的基本用法

使用unordered_map需要包含 头文件,定义map对象时,可以指定键值类型和元素类型,如下所示:


std::unordered_map<std::string,int> student

以上定义了一个名为student的unordered_map对象,其键值类型为字符串,元素类型为整数。下面是unordered_map的常用操作:

a) 插入元素

可以使用insert()函数插入元素,插入方式可以根据键值对或者std::make_pair()来进行。


student.insert(std::pair<std::string,int>("Tom", 18));

student.insert("Jerry");

b) 访问元素

可以使用[]或at()函数来访问元素,如果通过[]访问一个不存在的元素,会直接创建一个新的元素。


// 使用[]访问元素

std::cout << student["Tom"] << std::endl;

// 使用at()函数访问元素

std::cout << student.at("Jerry") << std::endl;

c) 删除元素

可以使用erase()函数删除元素,也可以使用clear()函数清空所有元素。


student.erase("Tom");

student.clear();

3. unordered_map的性能

std::unordered_map的时间复杂度为O(1),也就是说,它的插入、读取和删除操作的时间复杂度都是常数级别的。由于底层实现是哈希表,因此unordered_map非常适合需要快速查找和访问元素的情况。

4. unordered_map的注意事项

a) 不能使用自定义类型作为键值类型

unordered_map是通过哈希函数来计算键值的哈希值,因此键值类型必须可以通过哈希函数进行计算,自定义类型可能无法计算哈希值,因此不能用作键值类型。

b) 支持重复元素的插入

与std::set和std::map不同,std::unordered_map支持插入重复的元素,如果插入多个相同的键值对,只有一个会被保留,其他的会被删除。

c) 支持自定义哈希函数

如果std::unordered_map的键值类型不是基本类型,则必须提供自定义的哈希函数。

以上就是C++的unordered_map使用指南,希望能对大家有所帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复