2017-10-30 3 views
1

함수에 int 배열을 전달하는 대신 선택 정렬을 구현할 때 함수 템플릿을 사용하는 것이 바람직한 이유는 무엇입니까? 정수를 비교하려고 할 때 모든 유형의 배열에서 작동 할 수있는 이유는 무엇입니까? 왜 스왑 함수에서 다른 유형을 사용 했습니까? Item을 다시 사용할 수 없습니까? 이 선택을 구현 정렬 대신 함수에 int 배열을 전달할 때 기능 템플릿을 사용하는 것이 바람직하다 왜C++의 selectionSort 함수에서 템플릿 사용

template <class Item> 
void selectionSort(Item a[], int n) { 
    for (int i = 0; i < n - 1; i++) { 
    int min = i; 
    for (int j = i + 1; j < n; j++) { 
     if (a[j] < a[min]) 
     min = j; 
    swap(a[i], a[min]); 
    } 
    } 
} 

template <class Object> 
void swap(Object &el1, Object &el2) { 
    Object temp = el1; 
    el1 = el2; 
    el2 = temp; 
} 

답변

1

?

  1. 적은 비교 연산자 (operator<)보다 :

그런 다음, 다음 동작들을 지원하는 개체 유형의 배열을 정렬하는 기능을 사용할 수있다.

  • 스왑 기능.
  • 내 경험상, 함수 템플릿을 만들면 대개 디자인이 향상됩니다.

    1. 개체 유형과 독립적 인 작업입니다.
    2. 개체 유형별 작업입니다.

    당신의 생각에 선명도를 제공하여 디자인이 향상되었습니다.

    관련 문제