próbuję zdefiniować unordered_set takiego:Jak korzystać z unordered_set?
unordered_set<Point> m_Points;
Kiedy go skompilować, pojawia się następujący błąd:
The C++ Standard doesn't provide a hash for this type.
Class 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);
}
};
- Jak/gdzie mogę zdefiniować funkcję skrótu dla Punkt?
- Jaka byłaby dobra funkcja skrótu dla punktu 2D?
Istnieje niezły opis [tutaj] (https://en.wikipedia.org/wiki/Unordered_associative_containers_ (C% 2B% 2B) #Custom_hash_functions). –
Leniwym rozwiązaniem może być wyprowadzenie twojej klasy z 'std :: pair' ... –
czy mogę zdefiniować funkcję hash w klasie Point i przekazać ją jako funktor do unordered_set w drugim argumencie szablonu? – brainydexter