함수 템플리트 (C++ 전용)

함수 템플리트 는 함수 그룹을 생성할 수 있는 방법을 정의합니다.

템플리트가 아닌 기능이 템플리트에서 생성된 특수화의 이름 및 매개변수 프로파일과 동일한 이름 및 매개변수 프로파일을 가질 수 있더라도 템플리트가 아닌 기능은 기능 템플리트와 관련되지 않습니다. 템플리트가 아닌 기능은 기능 템플리트의 특수화로 간주되지 않습니다.

다음 예제는 quicksort라는 함수 템플리트를 사용하여 quicksort 알고리즘을 구현합니다.
#include <iostream>
#include <cstdlib>
using namespace std;

template<class T> void quicksort(T a[], const int& leftarg, const int& rightarg)
{
  if (leftarg < rightarg) {

    T pivotvalue = a[leftarg];
    int left = leftarg - 1;
    int right = rightarg + 1;

    for(;;) {

      while (a[--right] > pivotvalue);
      while (a[++left] < pivotvalue);

      if (left >= right) break;

      T temp = a[right];
      a[right] = a[left];
      a[left] = temp;
    }

    int pivot = right;
    quicksort(a, leftarg, pivot);
    quicksort(a, pivot + 1, rightarg);
  }
}

int main(void) {
  int sortme[10];

  for (int i = 0; i < 10; i++) {
    sortme[i] = rand();
    cout << sortme[i] << " ";
  };
  cout << endl;

  quicksort<int>(sortme, 0, 10 - 1);

  for (int i = 0; i < 10; i++)
    cout << sortme[i] << " ";
  cout << endl;
  return 0;
}
위의 예에는 다음과 유사한 출력이 있습니다.
16838 5758 10113 17515 31051 5627 23010 7419 16212 4086
4086 5627 5758 7419 10113 16212 16838 17515 23010 31051
이 빠른 정렬 알고리즘은 T 유형의 배열을 정렬합니다 (관계 및 대입 연산자가 정의되어 있음). 템플리트 함수는 하나의 템플리트 인수와 세 개의 함수 인수를 사용합니다.
  • 정렬할 배열의 유형, T
  • 정렬할 배열의 이름, a
  • 배열의 하한, leftarg
  • 배열의 상한, rightarg
위의 예에서 다음 명령문을 사용하여 quicksort() 템플리트 함수를 호출할 수도 있습니다.
  quicksort(sortme, 0, 10 - 1);

컴파일러가 템플리트 함수 호출의 사용법과 컨텍스트를 사용하여 템플리트 인수를 추론할 수 있는 경우 템플리트 인수를 생략할 수 있습니다. 이 경우 컴파일러는 sortmeint유형의 배열임을 추론합니다.

C++ C++11 만의 시작.

템플리트 매개변수 팩 은 함수 템플리트의 템플리트 매개변수 유형일 수 있으며 함수 매개변수 팩 은 함수 템플리트의 함수 매개변수 유형일 수 있습니다. 자세한 정보는 Variadic 템플리트 (C++11)를 참조하십시오.

함수 템플리트에 대해 후행 리턴 유형을 사용할 수 있습니다. 여기에는 다음과 같은 유형의 리턴 유형이 있습니다.

  • 함수 인수의 유형에 따른 리턴 유형
  • 복잡한 리턴 유형

자세한 정보는 후행 리턴 유형 (C++11)을 참조하십시오.

C++ C++11 의 끝.