C++中unordered_map是什么函数
时间: 2024-11-30 10:16:47 浏览: 18
在C++中,`unordered_map`是一个关联容器,它属于《C++ Standard Template Library》(STL)的一部分。它是基于哈希表实现的,用于存储键值对,提供常数时间复杂度(O(1))的平均查找、插入和删除操作。`unordered_map`模板有两个参数,第一个参数通常是自定义类型的键(Key),第二个参数是键对应的值类型(Value)。它通过计算键的哈希值来快速定位元素,使得数据访问非常高效。
例如,你可以这样使用:
```cpp
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> myMap;
myMap["apple"] = 1;
myMap["banana"] = 2;
// 查询
int countApples = myMap["apple"];
cout << "Number of apples: " << countApples << endl;
return 0;
}
```
相关问题
c++自定义unordered_map的哈希函数
在C++中,可以通过自定义哈希函数来为unordered_map提供自定义的键值对哈希算法。下面是一个简单的示例:
```cpp
#include <iostream>
#include <unordered_map>
// 自定义哈希函数
struct MyHashFunc {
std::size_t operator()(const std::string& key) const {
// 自定义哈希算法,这里使用简单的ASCII码之和作为哈希值
std::size_t hashValue = 0;
for (char c : key) {
hashValue += static_cast<std::size_t>(c);
}
return hashValue;
}
};
int main() {
// 使用自定义哈希函数创建unordered_map
std::unordered_map<std::string, int, MyHashFunc> myMap;
// 添加键值对
myMap["apple"] = 1;
myMap["banana"] = 2;
myMap["cherry"] = 3;
// 访问键值对
std::cout << "The value of 'apple' is: " << myMap["apple"] << std::endl;
return 0;
}
```
在上述示例中,我们定义了一个名为`MyHashFunc`的结构体,重载了`operator()`运算符,该运算符接受一个`std::string`类型的参数,并返回一个`std::size_t`类型的哈希值。在这个自定义的哈希函数中,我们使用了简单的ASCII码之和作为哈希值。
然后,我们使用`MyHashFunc`作为unordered_map的第三个模板参数来创建了一个自定义的unordered_map对象`myMap`。我们可以像使用普通的unordered_map一样,通过键来访问和操作键值对。
C++中unordered_map是什么
unordered_map 是 C++ 中 STL 库中的一种数据结构,它是一种哈希表,能够高效地存储键-值对。使用 unordered_map 需要包含 <unordered_map> 头文件。
下面是一个简单的例子:
```
#include <unordered_map>
#include <string>
int main() {
std::unordered_map<std::string, int> myMap;
myMap["hello"] = 1;
myMap["world"] = 2;
std::cout << myMap["hello"] << std::endl; // 输出 1
std::cout << myMap["world"] << std::endl; // 输出 2
return 0;
}
```
unordered_map 也可以使用迭代器遍历,支持常用的 STL 方法,如 find, count, size, clear 等。
常用的构造函数有:
- `unordered_map<Key, T> map;` : 创建一个空的 unordered_map,默认桶的数量为0。
- `unordered_map<Key, T> map(n);` : 创建一个空的 unordered_map,预计容量为n。
- `unordered_map<Key, T> map(n, hasher);` : 创建一个空的 unordered_map,预计容量为n,并使用给定的 hasher 函数。
- `unordered_map<Key, T> map(n, hasher, key_equal);` : 创建一个空的 unordered_map,预计容量为n,并使用给定的 hasher 和 key_equal 函数。
阅读全文