是的,C++的std::map模板類支持自定義類型作為鍵值。要在map中使用自定義類型作為鍵值,需要為該類型提供比較運算符(<)或自定義比較函數,以便map能夠正確地比較鍵值和查找對應的元素。
示例代碼:
#include <iostream>
#include <map>
class MyKey {
public:
int value;
MyKey(int value) : value(value) {}
bool operator<(const MyKey& other) const {
return value < other.value;
}
};
int main() {
std::map<MyKey, std::string> myMap;
myMap[MyKey(1)] = "Value1";
myMap[MyKey(2)] = "Value2";
myMap[MyKey(3)] = "Value3";
MyKey keyToFind(2);
auto it = myMap.find(keyToFind);
if (it != myMap.end()) {
std::cout << "Found key " << it->first.value << ", value is " << it->second << std::endl;
} else {
std::cout << "Key not found" << std::endl;
}
return 0;
}
在上面的示例中,我們定義了一個自定義類型MyKey作為map的鍵值,并實現了比較運算符<。我們可以使用MyKey對象作為map的鍵值,并使用find方法查找對應的元素。