힙에 대해 더 배우려면, 필자는 자체 MaxHeap 클래스를 구현했습니다. 나는 그것을 시험했으며 잘 작동한다. 이제 MinHeap을 만들고 싶습니다. 두 가지 (MaxHeap 및 MinHeap)에서 다를 수있는 유일한 것은 비교 일뿐입니다 (즉, <을> =로 변경). 그렇다면 어떻게하면 두 가지 방식으로 수업을 재 설계 할 수 있습니까? 내 마음에 오는 것은 객체를 만드는 동안 비교 함수를 전달하는 것입니다. 그게 최선의 방법인가요? 그렇다면 어떻게해야합니까? 나는 내가 찾고있는 것을 검색하기에 적합한 키워드를 모른다. 그런 수업의 디자인을 설명하고 튜토리얼을 가르쳐주세요. 감사!비교기를 허용하는 클래스를 만드는 방법 (최대 힙 및 최소 힙에 대해)?
2
A
답변
4
표준 라이브러리처럼 수행 및 비교기에게 템플릿 인수하기 : 당신이 두 가지 요소 a
및 b
을 비교해야 할 때
template <typename T, typename SWOComp = std::less<T>>
class MyHeap
{
SWOComp compare;
public:
explicit MyHeap(SWOComp c = SWOComp()) : compare(c) { }
// ...
};
그런 다음, compare(a, b)
을 사용합니다.
보통 <
정렬 형식을 인스턴스화하려면, 무엇인가 MyHeap<int>
을 말하십시오. 역 순서를 사용하려면 MyHeap<double, std::greater<double>>
라고 말하십시오. 기타 등등
추가 구성원 개체에 대해 걱정할 필요가 없습니다. 빈베이스 클래스 최적화를 사용하면 상태 비 저장 비교기에 비용이 들지 않습니다.
+0
나는 그것을 구현했고 완벽하게 작동했다. 감사! – Vinay
관련 문제
- 1. 약 힙 (최대 힙 및 최소 힙)
- 2. 최소/최대 이진 힙 생성
- 3. 최소 - 최대 힙에 대한 Java 구현?
- 4. IE에 대해 최대 및 최소 폭
- 5. C++에서 힙에 대한 최소 구현 추출
- 6. JBoss에 최적의 최소 및 최대 힙 크기 지정
- 7. 최대 힙 및 이진 트리
- 8. 최소 힙 알고리즘
- 9. 배열로 최소 힙 구현하기 : 최소 삽입 및 제거 (중복 포함)
- 10. 최소 Java 힙 크기를 설정하는 이유는 무엇입니까?
- 11. 최소 및 최대 버튼이있는 JSpinner
- 12. 입력에 대한 최대 및 최소
- 13. 정수 스트림의 최대 및 최소
- 14. 최소 및 최대 스레드의 병렬
- 15. Python의 최소 및 최대 찾기
- 16. 정말 Java 최소 힙 크기를 정의해야합니까?
- 17. JVM 최소 힙 크기 권장 사유?
- 18. 파이썬을 사용하여 숫자를 허용하는 계산기 클래스를 만드는 방법
- 19. 최대 및 최소 한도로 Django FloatField를 만드는 방법은 무엇입니까?
- 20. 최소 및 최대 수의 확인란에 대해 ASP.NET MVC3 유효성 검사기를 만드는 방법은 무엇입니까?
- 21. 사용자 정의 유형의 C++ 최소 힙
- 22. 자동 확대를위한 Gnuplot 최소 및 최대 경계
- 23. MatLab의 데이터 세트의 최대 및 최소 점
- 24. 최대 절전 모드 - 스택 또는 힙에?
- 25. numeric_limits 최소/최대 constexpr입니까?
- 26. Android 힙 크기 및 SoftReferences
- 27. 최소/최대 설정 Monotouch.Dialog.TimeElement
- 28. Excel 차트 개체의 최대/최소 값 및 위치를 검색하는 방법
- 29. 검색 최대/최소 기록
- 30. 내부 메모리가 이미 힙에 할당되어있을 때 힙에 객체를위한 메모리를 할당해야합니까?
'> ='은 (는) 엄격한 약한 명령이 아닙니다. –