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