12-2 template, pair

qzzloz·2023년 7월 11일
0

Data Structure

목록 보기
5/9
post-thumbnail

1. template

함수 템플릿

  • 함수의 일반화된 버전을 작성하는 것
  • 함수의 매개변수나 리턴타입을 일반화된 형태로 선언하고, 이를 특정한 타입으로 대체하여 함수를 인스턴스화한다.
  • 특정 타입에 대해 재사용이 가능하다.
template<typename T>
T function(T arg1, T arg2){
	//함수 구현
}
  • 명시적 특수화: 특정 타입에 대해 명시적 특수화를 제공, 해당 타입에 대해 특별한 동작을 수행하도록 정의
  • 컴파일러는 호출된 함수에 정확히 대응하는 특수화된 정의를 발견하면, 더는 템플릿을 찾지 않고 해당 정의를 사용한다.
template<>
return_type function<specific_type>(arguments){
	//함수 구현
}

클래스 템플릿

  • 클래스의 멤버 변수, 멤버 함수, 타입을 일반화된 형태로 선언
template<typename T>
class className{
	//클래스 정의
}
  • 중첩 클래스 템플릿: 클래스 내부에 정의된 클래스 템플릿
template<typename T>
class Outer{
	template<typename U>
    class Inner{
    	//클래스 정의
    }
}
  • 명시적 특수화
template<>
class className<specific_type>{
	//클래스 정의
}

2. pair

  • #include<utility> 헤더파일에 존재
  • 생성 방식: make_pair(자료형, 자료형)
  • 선언 방식: pair<자료형, 자료형> p;
  • first: 첫 번째 인자 반환, second: 두 번째 인자 반환

0개의 댓글