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가 더 효율적입니다.