unordered_set和unordered_map的区别
时间: 2023-08-19 07:10:22 浏览: 71
unordered_set和unordered_map的区别在于它们的底层实现和允许的键值冗余。unordered_set和unordered_map都是使用哈希表来实现的,而unordered_map是一种映射容器,可以存储键值对,而unordered_set只存储唯一的值。[2]另外,unordered_map不允许键值冗余,即key值不能重复,而unordered_set也不允许值的重复。[1]相比之下,unordered_multimap和unordered_multiset允许键值冗余,即key值或值可以重复。[1][3]所以,unordered_set和unordered_map主要区别在于是否允许键值冗余和存储的数据类型。
相关问题
unordered_map和unordered_set的区别
unordered_map和unordered_set是C++中的两种容器,它们都属于哈希容器,用于存储键值对或者唯一的元素。它们的区别在于:
1. 存储方式:unordered_map存储键值对,每个元素都包含一个键和一个关联的值;而unordered_set只存储唯一的元素,没有键值对的概念。
2. 键的唯一性:unordered_map要求键是唯一的,即不能存在重复的键;而unordered_set中的元素也是唯一的,不能存在重复的元素。
3. 访问方式:unordered_map可以通过键来快速查找对应的值;而unordered_set只能判断元素是否存在。
4. 迭代器范围:unordered_map的迭代器范围是键值对;而unordered_set的迭代器范围只是元素本身。
总结来说,unordered_map适用于需要根据键查找对应值的场景,而unordered_set适用于需要存储唯一元素且不关心键值对的场景。
unordered_set 和unordered_map的区别
unordered_set和unordered_map是C++标准库中的两个容器类,它们的区别如下:
1. 存储方式:unordered_set是一种无序的集合容器,其中的元素没有特定的顺序,而unordered_map是一种无序的键值对容器,可以根据键来查找对应的值。
2. 元素类型:unordered_set存储唯一的元素,而unordered_map存储键值对,其中键是唯一的。
3. 底层实现:unordered_set和unordered_map都是基于哈希表实现的。unordered_set使用哈希函数将元素映射到桶中,而unordered_map则使用哈希函数将键映射到桶中。
4. 访问元素:在unordered_set中,可以通过迭代器或者范围进行元素的访问。在unordered_map中,可以通过键来访问对应的值。
5. 冲突处理:当多个元素被映射到同一个桶中时,称为冲突。unordered_set和unordered_map都使用链地址法解决冲突,即将冲突的元素链接在同一个桶中。
总的来说,unordered_set适用于需要存储唯一元素的场景,而unordered_map适用于需要存储键值对并且通过键快速查找值的场景。它们在使用时具有不同的特点和用途。