Tôi cố gắng để xác định một unordered_set như thế này:Làm cách nào để sử dụng unordered_set?
unordered_set<Point> m_Points;
Khi tôi biên dịch nó, tôi nhận được lỗi sau:
The C++ Standard doesn't provide a hash for this type.
Lớp Point
:
class Point{
private:
int x, y;
public:
Point(int a_x, int a_y)
: x(a_x), y(a_y)
{}
~Point(){}
int getX()const { return x; }
int getY()const { return y; }
bool operator == (const Point& rhs) const{
return x == rhs.x && y == rhs.y;
}
bool operator != (const Point& rhs) const{
return !(*this == rhs);
}
};
- thế nào/Tôi xác định hàm băm ở đâu cho Điểm?
- Chức năng băm tốt cho điểm 2D là gì?
Có một mô tả khá hay [ở đây] (https://en.wikipedia.org/wiki/Unordered_associative_containers_ (C% 2B% 2B) #Custom_hash_functions). –
Một giải pháp lười biếng có thể là lấy được lớp học của bạn từ 'std :: pair' ... –
tôi có thể định nghĩa hàm băm trong lớp Point và chuyển nó thành một hàm functor thành unordered_set trong đối số thứ hai của mẫu không? – brainydexter