>백엔드 개발 >C++ >C++ 템플릿과 제네릭을 비교하시나요?

C++ 템플릿과 제네릭을 비교하시나요?

WBOY
WBOY원래의
2024-06-04 16:24:12418검색

C++에서 템플릿과 제네릭의 차이점: 템플릿: 컴파일 타임에 정의되고, 유형이 명확하며, 효율성이 높고, 코드 크기가 작습니다. 제네릭: 런타임 타이핑, 추상 인터페이스는 유연성과 낮은 효율성을 제공합니다.

C++ 템플릿과 제네릭을 비교하시나요?

C++ 템플릿과 제네릭의 비교

개념

  • 템플릿: 컴파일 타임에 정의된 코드 블록으로, 특정 데이터 유형에 따라 다양한 코드를 생성할 수 있습니다.
  • 일반: 런타임에 입력된 다양한 유형의 데이터에 대해 코드가 작동할 수 있는 추상 인터페이스입니다.

차이

Features Template Generics
정의 타이밍 컴파일 시간 런타임
Typed Explicit Inferred
Efficiency 빠르게 느리게
코드 크기 더 작게 더 작게

실제 사례

template:

template<typename T>
T max(T a, T b) {
  return (a > b) ? a : b;
}

이 템플릿 함수는 다양한 유형을 계산할 수 있습니다. 데이터의 최대값(예: :

int max_int = max(10, 20); // 输出:20
double max_double = max(3.14, 2.71); // 输出:3.14

Generics:

class NumberComparator {
public:
  bool operator()(int a, int b) const {
    return a < b;
  }
};

이 일반 클래스는 정수 비교를 위한 인터페이스를 구현하고 다양한 정렬 알고리즘에 사용할 수 있습니다.

std::vector<int> numbers = {5, 2, 8, 3, 1};
std::sort(numbers.begin(), numbers.end(), NumberComparator());

for (auto& number : numbers) {
  std::cout << number << " "; // 输出:1 2 3 5 8
}

결론

템플릿과 제네릭 모두 서로 다른 작업을 처리하는 코드에 대한 강력한 C++ 기능입니다. 데이터 유형. 템플릿은 컴파일 타임에 입력되므로 더욱 효율적이고 코드 크기가 작아집니다. 제네릭은 런타임에 유형 추론을 수행하고 보다 추상적인 인터페이스를 제공하지만 효율성은 약간 떨어집니다.

위 내용은 C++ 템플릿과 제네릭을 비교하시나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.