cpp中如何两个key对一个value
时间: 2024-04-12 17:28:37 浏览: 242
C++ map 根据value找key的实现
在C++中,你可以使用`std::map`容器来实现一个键值对的映射关系,其中一个键对应一个值。如果你想要实现两个键对应同一个值的情况,可以使用自定义的数据结构或者使用`std::unordered_map`容器来存储两个键与一个值的映射关系。下面是一个示例代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <string>
struct KeyPair {
std::string key1;
std::string key2;
};
struct KeyPairHash {
std::size_t operator()(const KeyPair& pair) const {
// 自定义哈希函数,将两个键组合起来计算哈希值
return std::hash<std::string>{}(pair.key1) ^ std::hash<std::string>{}(pair.key2);
}
};
struct KeyPairEqual {
bool operator()(const KeyPair& pair1, const KeyPair& pair2) const {
// 自定义相等函数,比较两个键对是否相等
return pair1.key1 == pair2.key1 && pair1.key2 == pair2.key2;
}
};
int main() {
std::unordered_map<KeyPair, int, KeyPairHash, KeyPairEqual> keyValueMap;
KeyPair pair1 = {"key1", "key2"};
KeyPair pair2 = {"key3", "key4"};
keyValueMap[pair1] = 100;
keyValueMap[pair2] = 200;
// 通过两个键获取值
int value = keyValueMap[pair1];
std::cout << "值: " << value << std::endl;
return 0;
}
```
在上面的示例中,我们定义了一个自定义的`KeyPair`结构体,其中包含两个键`key1`和`key2`。然后,我们使用`std::unordered_map`容器来存储`KeyPair`和一个整数值的映射关系。我们还定义了自定义的哈希函数`KeyPairHash`和相等函数`KeyPairEqual`,用于在容器中进行哈希和相等性比较。通过这种方式,我们可以实现两个键对应同一个值的情况。
阅读全文