일부 특정 및/또는 매우 이국적인 비교 방법을 구현하는 비교기를 구현할 때는 해당 목적으로 operator <
을 하이재킹하는 대신 명명 된 함수 또는 함수 개체를 사용하는 것이 좋습니다. std::pair
객체를 비교하는 자연스러운 방법은 사전 비교를 사용하는 것입니다. 비교가 사전식이 아니기 때문에 operator <
을 대신하는 것이 좋습니다. 더 나은 비교기 클래스를
typedef pair< int, area_t > Pair; // give it a more meaningful name
struct CompareFirstThroughSecond {
bool operator()(const Pair& p1, const Pair& p2) const {
if (p1.first != p2.first) return p1.first < p2.first;
return p1.second->first < p2.second->first;
}
};
를 구현하고 컨테이너
std::set< Pair, CompareFirstThroughSecond > queue;
(내가 제대로 원래의 코드에서 사용자의 의도를 해독 희망)와 함께 사용.
또한 위의 operator()
메서드를 템플릿 메서드로 구현할 수 있으므로 반복자가 second
인 모든 std::pair
기반 형식에서 사용할 수 있습니다. 당신의 비교가 "이국적인"정도로 충분하기 때문에 그것은 이해할 수 없습니다.
출처
2010-02-24 19:50:52
AnT
재미있는 이름은 여기에 있습니다.) –
이름이 뭔가요? 다른 이름의 장미는 단맛으로 냄새가났다. –