unorder_map的用法
时间: 2023-04-12 08:01:49 浏览: 135
unordered_map是C++ STL中的一个关联容器,它提供了一种将键映射到值的方式。它使用哈希表来实现,因此查找和插入操作的时间复杂度为O(1)。使用unordered_map时,需要包含头文件<unordered_map>。下面是一个简单的示例:
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_map<std::string, int> mymap = {
{"apple", 1},
{"banana", 2},
{"orange", 3}
};
std::cout << "The value of apple is " << mymap["apple"] << std::endl;
return 0;
}
这个程序创建了一个unordered_map,将字符串键映射到整数值。然后,它输出了键"apple"对应的值。
相关问题
unorder_map查询失败
如果在使用 unordered_map 进行查询时失败,可能有以下几个原因:
1. 键值不存在:unordered_map 是基于哈希表实现的,如果要查询的键值不存在,那么查询结果将返回 unordered_map 中定义的默认值,通常是 0 或者空指针。因此,需要确保要查询的键值已经正确地插入到了 unordered_map 中。
2. 哈希冲突:当哈希表中存在多个键值映射到同一个哈希桶时,就会发生哈希冲突。这种情况下,需要通过链表或者红黑树等数据结构来解决。如果 unordered_map 中的哈希函数实现不好或者哈希表的大小设置不合理,都可能导致哈希冲突。
3. 代码逻辑错误:如果在使用 unordered_map 进行查询时失败,可能是代码逻辑有误导致的。需要检查代码是否正确地使用了 unordered_map 的 API,例如是否正确地使用了 find() 函数,或者是否正确地对迭代器进行了操作等。
综上所述,需要仔细检查代码,确保键值存在且哈希函数实现合理,以及正确地使用 unordered_map 的 API。
map和unorder_map的区别
`map`和`unordered_map`都是C++ STL中用来存储键值对的容器,它们的主要区别在于实现方式和性能。
`map`是基于红黑树实现的,它的元素会按照键的大小进行自动排序,因此在查找元素时可以进行二分查找,时间复杂度为O(logn)。但是由于需要维护红黑树的平衡性,因此在插入元素时会有一定的开销,时间复杂度为O(logn)。同时,`map`占用的空间比较大,因为除了存储键值对外,还需要存储红黑树的平衡信息。
`unordered_map`是基于哈希表实现的,它的元素不会按照键的大小进行排序,而是通过哈希函数将键映射到一个桶中,从而实现O(1)的查找。但是由于哈希冲突的存在,插入和查找元素的时间复杂度会受到影响,最坏情况下可能达到O(n)。同时,`unordered_map`占用的空间比较小,因为只需要存储键值对和哈希表的基本信息。
因此,如果需要按照键的大小进行排序或者需要快速插入和删除元素,可以选择使用`map`。如果需要快速查找元素,可以选择使用`unordered_map`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)