我可以在c ++的map结构中使用vector作为索引吗?

2 c++ stl class vector map

我试图做这样的事情,但它不编译:

class point
{
    public:
        int x;
        int y;
};



int main()
{

    vector<point> vp1;
    vector<point> vp2;
    vector<point> vp3;

    map < vector<point>, int > m;

    m[vp1] = 1;
    m[vp2] = 2;
    m[vp3] = 3;

    map < vector<point>, int >::iterator it;
    for (it=m.begin(); it!=m.end(); it++)
    {
        cout<<m[it->first]<<endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 6

你可以使用任何东西作为指数型成std::map,只要它支持operator<(这可能可以定义为一个独立的功能-并不一定是一个成员函数,只要你能写a < bab被实例您喜欢的类型)与通常的语义(反自反,传递,...).或者,您可以传递具有相同语义的二进制函数来代替<,如果这更适合您.