Мультисеть Upper_bound и Lower_Bound не работает

Я решаю некоторые проблемы геометрии, и я не знаю, как справиться со странной проблемой с мультимножеством.
Я должен вычислить количество пар окружностей, имеющих общую точку. Так что я использую алгоритм стреловидной линии, чтобы решить эту проблему. Когда у меня есть разные круги по всей оси X, нижняя и верхняя границы отлично работают. Но когда у меня есть круги на оси у
Предположим, у меня есть круги на:
<0,10><0,20><0,30> все с радиусом 5, mset возвращает мне нулевой указатель на нижней и верхней границе.

struct point{
int x, y, pos,m;
bool operator<(const point &p)const {
return y<p.y;  };
};std::multiset<point>::iterator itlow,itup;
itlow = mset.lower_bound (p[i]);// p is a vector of points
itup = mset.upper_bound (p[i]);     // mset is a multiset of points
// check the iterators
if(itlow==mset.end())
printf("NULL\n");
if(itup==mset.end())
printf("NULL\n");

я также попытался сменить оператора таким образом

 bool operator<(const point &p1,const point &p2) {
if(p1.y!=p2.y)
return p1.y<p2.y;
else if (p1.x!=p2.x)
return p1.x<p2.x;
else if(p1.pos!=p2.pos)
return p1.pos<p2.pos;
else return p1.m>p2.m; };

это падает.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]