Week4

Week 4 - 21.08.19

쓰고쓰디쓴 2021. 8. 19. 20:20

C++ 공부 15일 차

 

오늘은 템플릿과 벡터에 대해 공부했습니다.

 - 템플릿(template)

  • 함수와 클래스에서 유형을 매개변수화하는 기능으로, 컴파이럴에 의해 구체적 유형으로 대체될 수 있는 제네릭 유형입니다.
  • 형식은 template<typename T>입니다.
  • 아래 예시와 같이 왼쪽에 여러개로 오버로딩된 maxValue 함수들이 오른쪽의 템플릿을 사용한 하나의 maxValue로 간략하게 포현할 수 있습니다.

템플릿의 대표적인 예시.

  • 클래스 템플릿은 클래스의 이름 위에 template<typename T>라고 작성하면 되며, 만약 .h와 .cpp 파일로 나눈다면 .h에만 template<typename T>를 작성하면 되고, .cpp 파일에서 범위 지정 연산자 앞에있는 클래스 이름에 <T>를 붙여야됩니다.
    ex) Stack<T>::push
  • template<typename T = dataType> 의 형식으로 default dataType를 정할 수 있습니다. 또한,
    template<typename T, int capacity> 의 capacity처럼 비형식 매개변수도 사용할 수 있습니다. 해당 템플릿의 예시는 Stack<std::string str, 500> 이런식으로 사용할 수 있습니다.

- 벡터(vector)

  • 벡터는 배열처럼 사용할 수 있으며, 벡터의 크기가 필요할 경우 자동으로 증가시킬 수 있습니다.
  • vector<elementType> vectorName의 형식으로 선언할 수 있습니다.
  • vector도 string처럼 하나의 객체입니다. 그렇기 때문에 #include <vector>를 입력해야 사용할 수 있습니다.
  • 일반 배열처럼 사용가능하며, 별도의 함수들도 존재합니다. ex) size(), push_back(), pop_back() etc...
  • 만약 크기가 고정된다면 배열이 더 효율적이지만, 크기가 유동적이라면 vector가 더 효율적입니다.