C++中有时可能会需要使用以结构体(struct)为键值的(map)
like this:
struct Node
{
LL x, y;
friend bool operator<(const Node& a, const Node& b) {
if (a.x < b.x || (a.x == b.x && a.y < b.y)) {
return true;
}
return false;
}
}p[N];
map<Node, LL> mp;
但是重载运算符中加不加(friend)影响巨大。
只有加上(friend)才能够通过编译。
我的猜想是重载(<)的时候如果不加(friend),则该函数没法访问到(map)的变量(应该是(private)或(protected)的所以没法直接访问),就会报错。加了(friend)的话可以访问(map)类的所有(private)或(protected)的成员。