```cpp
struct point
{
int x,y;
bool operator<(point a)
{
return x==a.x?x<a.x:y<a.y;
}
};
```
这样就行了。
还有要善用STL的find函数。
by Prean @ 2020-04-06 10:02:03
@[gzf2008](/user/216248)
首先你要重载小于号,下面是一种做法(定义在结构体外部):
```cpp
bool operator <(point a, point b) {
//这里是自己定义的比较规则
return a.x < b.x;
}
```
然后,要往$s$里面插入结构体,可以这样做:
```cpp
point a;
a.x = 0;
a.y = 0;
s.insert(a);
```
或者你可以定义一个构造函数,像这样定义一个结构体:
```cpp
struct point {
double x, y;
point(double x, double y) :x(x), y(y) {}
};
```
然后这样插入:
```cpp
s.insert(point());
```
等价于:
```cpp
s.insert(point(0, 0));
```
by Zlc晨鑫 @ 2020-04-06 10:02:24
我会pair,可我不熟练
by gzf2008 @ 2020-04-06 10:04:17
@[gzf2008](/user/216248) 倒数第八行?你这个$a$存的是$node$,不是$int$,你```upper_bound```的是一个整形变量。
by Zlc晨鑫 @ 2020-04-06 10:05:15
额,谢啦
by gzf2008 @ 2020-04-06 10:06:51
@[gzf2008](/user/216248) 还有你这代码好像不止第八行错吧……
by Zlc晨鑫 @ 2020-04-06 10:06:54
@[gzf2008](/user/216248) 题号发一下
by Zlc晨鑫 @ 2020-04-06 10:07:40
别的OJ
by gzf2008 @ 2020-04-06 10:08:13
热心的 @[Zlc晨鑫](/user/297555) @[limaopipi2022](/user/160839) 谢谢
by gzf2008 @ 2020-04-06 10:09:56