温馨提示×

C++ map.find是否支持自定义类型键值

c++
小樊
137
2024-06-13 17:03:45
栏目: 编程语言
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

是的,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方法查找对应的元素。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:C++ map.find最佳实践是什么

0