<X>

2012-02-14 4 views
1

이 바보 같은 문제처럼 들릴 수도 있지만 나는 오랫동안 궁금는 더 좋은 방법이 그이 동일한 기능을 두 번, 정렬을 위해 한 번, 집합에서 암시 적 정렬을 위해 한 번 구현합니다. 코드 중복을 피할 수있는 방법이 있습니까?<X>

+1

'bool operator() (const X first, const X second) const {return sortComp (first, second);}'? – Vladimir

+1

이 특별한 경우에는 구조체 X에 대해 연산자 <를 구현하므로 집합과 정렬에 대해서는 잊어 버릴 수 있습니다. – stefaanv

답변

5

물론 둘 중 하나를 선택하고 다른 쪽의 통화를 변경하십시오.

// choosing the function object 
sort(begin(v), end(v), setComp()); // create setComp, sort will call operator() 

// choosing the function 
set<X, bool(*)(const X, const X)> s(sortComp); // pass function pointer 

저는 개인적으로 Functor 버전을 권장합니다.

+0

ahhhh, setComp 이후의() ... 그런 멍청한 놈. 함수 캐스트 :(임 큰 팬 :)하지만 함수 개체 위대한 작품 – NoSenseEtAl

+0

나는 어떤 의미합니까 어떤 기능 캐스트를 볼 수 없어? – fredoverflow

+0

구문에 대한 지식이 나쁘다 ... bool (*) (const X, const X) – NoSenseEtAl