0
시작점과 끝점으로 구성된 선분에 대해 어떻게 연산자 <을 구현합니까? 나는 그 라인 세그먼트를 맵에 삽입하여 순서가 의미 론적 일 필요는 없지만 모든 경우에 대해 작동해야합니다. 사전 식두 개의 점으로 구성된 Odering 선분
시작점과 끝점으로 구성된 선분에 대해 어떻게 연산자 <을 구현합니까? 나는 그 라인 세그먼트를 맵에 삽입하여 순서가 의미 론적 일 필요는 없지만 모든 경우에 대해 작동해야합니다. 사전 식두 개의 점으로 구성된 Odering 선분
주문의 모든 :
struct Point { int x; int y; };
bool operator<(Point const & a, Point const & b)
{
return (a.x < b.x) || (!(b.x < a.x) && (a.y < b.y));
}
또는 tuple
에서 준비했다 비교기를 사용
#include <tuple>
// ...
return std::tie(a.x, a.y) < std::tie(b.x, b.y);
또는 실제로이 점에 대한 std::tuple<int, int>
를 사용하고 전혀 아무것도하지! 그런 다음
는, 라인에 대해 동일한 작업을 수행합니다
typedef std::tuple<int, int> Point;
typedef std::tuple<Point, Point> LineSegment;
// everything "just works"
내가 라인을 주문하려면 :
반복하기는없는 작업 - 모든 솔루션은 튜플 모든 방법을 사용하여 단일 점이 아닌 두 점을 갖는 세그먼트. – funkysash
@ funkysash : 죄송합니다. 나는 잘못 읽었습니다.이 아이디어를 재귀 적으로'struct Line {Point x; 포인트 y; };'. 똑같은 코드. –
은 매력처럼 작동합니다. 고맙습니다 :) – funkysash