在C++中,std::map是一种关联容器,它使用键值对存储数据。要成为有效键,map的键类必须满足以下要求:
以下是一个简单的示例,说明如何使用自定义类作为std::map的键:
#include<iostream>
#include <map>
class MyClass {
public:
MyClass(int id) : m_id(id) {}
bool operator<(const MyClass& other) const {
return m_id< other.m_id;
}
MyClass(const MyClass& other) {
m_id = other.m_id;
}
MyClass& operator=(const MyClass& other) {
m_id = other.m_id;
return *this;
}
private:
int m_id;
};
int main() {
std::map<MyClass, std::string> my_map;
MyClass key1(1);
MyClass key2(2);
my_map[key1] = "Hello";
my_map[key2] = "World";
for (const auto& pair : my_map) {
std::cout<< pair.first.m_id << ": "<< pair.second<< std::endl;
}
return 0;
}
在这个示例中,我们定义了一个名为MyClass的自定义类,并实现了比较运算符、复制构造函数和赋值运算符。然后,我们使用MyClass对象作为std::map的键,并存储字符串值。最后,我们遍历map并打印键值对。
总之,要成为有效的std::map键,类型必须满足可比较、可复制、可哈希和可交换的要求。
领取专属 10元无门槛券
手把手带您无忧上云