unordered_map以向量作为key
时间: 2023-06-30 12:20:15 浏览: 111
可以使用std::vector作为unordered_map的key,但需要自定义一个hash函数来将vector转换为一个唯一的哈希值。下面是一个示例代码:
```c++
#include <iostream>
#include <vector>
#include <unordered_map>
struct VecHash {
std::size_t operator()(const std::vector<int>& vec) const {
std::size_t seed = vec.size();
for (const auto& i : vec) {
seed ^= i + 0x9e3779b9 + (seed << 6) + (seed >> 2);
}
return seed;
}
};
int main() {
std::unordered_map<std::vector<int>, std::string, VecHash> my_map;
std::vector<int> key1 = {1, 2, 3};
std::vector<int> key2 = {4, 5, 6};
my_map[key1] = "hello";
my_map[key2] = "world";
std::cout << my_map[key1] << " " << my_map[key2] << std::endl;
return 0;
}
```
在这个示例中,我们定义了一个叫做VecHash的结构体,它是一个函数对象,重载了operator()运算符。这个运算符将一个vector转换为一个唯一的哈希值。我们将这个结构体作为unordered_map的第三个参数来定义map对象。在使用map时,我们可以像使用其他类型的key一样使用vector作为key。
阅读全文