가끔 코딩하다가 하는 실수인데,
typedef 로 여러 자료형을 묶어서 사용하면서
C++ 인수 목록이 일치하는 오버로드된 함수의 인스턴스가 없습니다
오류 C2676 이항 '<': 'const _Ty1'이(가) 이 연산자를 정의하지 않거나 미리 정의된 연산자에 허용되는 형식으로의 변환을 정의하지 않습니다.
등등의 오류를 볼 수 있다.
이 때, 오류의 원인은 아무리 set이나 map의 형식에 맞게 사용했어도
연산자체가 불가능한 값(또는 형태)을 넣었기 때문이다.
set, map 등등의 STL은 내부에서 비교연산이 이루어지는데,
다음 코드를 통해 연산이 가능한 경우와 불가능한 경우를 살펴보고 실수하지 말자
1
2
3
4
5
6
|
struct poly {
int x, y;
};
set<pair<pair<poly, poly>, int> > visit; // 안되는 경우
typedef pair<int,int> pii2;
set<pair<pair<pii2, pii2>, int> > visit; // 되는 경우
|
'algorithm > algorithm' 카테고리의 다른 글
전위, 중위 정보로 트리 만들기 (0) | 2020.04.24 |
---|---|
c,c++ 세 점이 주어졌을 때 각도 구하기 (0) | 2020.04.10 |
Point in a Polygon - 다각형 내부점 판단 (0) | 2020.04.07 |
좌표 시계/반시계방향 정렬 (0) | 2020.04.07 |
bit masking (비트마스킹 정리) (0) | 2020.03.14 |