내 코드에서 나는 정확한 행동이 함수 객체에 의해 커스터마이징 될 수 있다는 점에서 몇 가지 표준 라이브러리 알고리즘과 유사한 디자인 전략을 채택하고있다. 가장 간단한 예제는 std :: sort입니다. 함수 객체는 객체 간의 비교 방법을 제어 할 수 있습니다.왜 기본 템플릿 매개 변수가있는 구현이 아닌 std :: sort (비교기가 있거나없는)의 두 가지 구현이 있습니까?
Visual C++는 자연스럽게 코드 복제와 관련된 std :: sort의 두 가지 구현을 제공합니다. 대신 단 하나의 구현을 가질 수 있고 기본 비교 자 (연산자 < 사용)를 기본 템플릿 매개 변수로 제공 할 수 있다고 상상했을 것입니다.
두 가지 버전의 합리적인 이유는 무엇입니까? 내 제안에 따라 인터페이스가 좀 더 복잡해질까요? 또는 객체가 연산자 <을 제공하지 않으면 혼동되는 오류 메시지가 나타 납니까? 아니면 그냥 작동하지 않을 수도 있습니다?
감사합니다,
다윗은
"Visual C++는 자연스럽게 코드 중복을 포함하는 std :: sort의 두 가지 구현을 제공합니다. *"왜 그렇게 생각하니? 확실한 구현은 술어 인수가 부족하여 술어 인수 (인수에 대해'std :: less :: value_type>()'을 전달하는 과부하의 관점에서 구현되는 과부하에 대한 것입니다). –
ildjarn
_ "왜 그렇게 생각하니?"_ 저는 Visual C++와 함께 제공되는 알고리즘의 구현을보고 두 가지 별도의 구현을 보았습니다. – PolyVox
그건 분명히 좋지 않은 구현입니다. 나는 '자연스럽게'라는 단어를 골랐다. – ildjarn