#include <iostream>
#include <map>
class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
bool operator<(const MyClass& other) const {
return value < other.value;
}
};
int main() {
std::map<MyClass, int> myMap;
MyClass obj1(10);
MyClass obj2(20);
myMap[obj1] = 1;
myMap[obj2] = 2;
for (const auto& pair : myMap) {
std::cout << "Key: " << pair.first.value << ", Value: " << pair.second << std::endl;
}
return 0;
}
#include <iostream>
#include <unordered_map>
class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
};
template <class T>
class MyHash {
public:
size_t operator()(const T& x) const {
std::hash<T> z;
return z(x.value);
}
};
class MyEqualTo {
public:
bool operator()(const MyClass& a, const MyClass& b) const {
return a.value == b.value;
}
};
int main() {
std::unordered_map<MyClass, int, MyHash<MyClass>, MyEqualTo> myMap;
MyClass obj1(10);
MyClass obj2(20);
myMap[obj1] = 1;
myMap[obj2] = 2;
auto it = myMap.find(obj1);
if (it!= myMap.end()) {
std::cout << "Value for key " << obj1.value << ": " << it->second << std::endl;
} else {
std::cout << "Key " << obj1.value << " not found" << std::endl;
}
return 0;
}