I know it has probably been asked a million times here, but I couldn't find any example that I could use.
I want to create an unordered_map whose key is an object that I made (vector2), what's the best way of implementing a hash function to it? Can I have an example?

struct vector2
{
    vector2();
    vector2(const vector2 &v2);
    vector2(float fx, float fy);
    vector2 operator * (float num) const;
    vector2 operator * (const vector2& v2) const;
    vector2 operator / (float num) const;
    vector2 operator / (const vector2& v2) const;
    vector2 operator - (float num) const;
    vector2 operator - (const vector2& v2) const;
    vector2 operator + (float num) const;
    vector2 operator + (const vector2& v2) const;
    bool operator == (const vector2& v2) const;
    bool operator != (const vector2& v2) const;
    vector2& operator += (const vector2& v2);
    vector2& operator -= (const vector2& v2);
    vector2& operator *= (float f);
    vector2& operator /= (float f);
    float x,y;
};

boost::unordered_map<vector2, int> won't work.