본문 바로가기
CODING/C++ STUDY

C++독학 14일차 - C++템플릿

by pharmerci 2021. 11. 8.
728x90

C++ 넘 오랜만에 올리는걸요,,, 이전에 공부한거 올립니당,,

 

요즘은 파이썬을 공부할까 생각중,,!! (C++ 넘어려움)

 

 

 

 

 

벡터는 가변길이 배열로 사용자가 크기를 마음대로 늘리고 줄일 수 있는 자료형이다. 스택은 자료구조에서도 배웠지만 pop과 push로 LIFO형태의 자료형이다.

 

문제점은 데이터타입이 바뀔때마다 다른 벡터를 만들어야 한다는 점이다.

 

 

 

 

이렇게 벡터를 하나 만든다고 했을 때 위의 주석처럼 문제가 발생하게 된다.

이를 해결하고 싶을 때

T* data; 이렇게 하고 때에 따라 T가 바뀌면 얼마나 좋을까! 하는 생각을 할 수 있는데

 

이런 템플릿 기능을 C++에서 지원하고 있다(놀람)

 

 


C++ 템플릿

 

템플릿은 어떤 물건을 찍어내는 틀이다. 사용자가 원하는 타입을 넣어주면 알아서 코드를 찍어내는 틀이라고 할 수 있다.

 

 

 

여기 내용을 위에서부터 읽으면 이해될 것이다..

(나도 이해했으니 여러분들도..!!)

 

 

 

 

그런데 

 

Vector<bool> int_vec;

 

이거는 템플릿 인자에 bool을 전달하여 bool을 저장하는 벡터로 사용할 수도 있다. 하지만 C++에서 기본으로 처리하는 단위가 1바이트이기 때문에 문제가 된다.

bool 데이터형은 1개 비트만으로 충분히 저장할 수 있다. 8비트를 사용해서 1개의 bool값을 저장해야 한다.

이것은 엄청난 낭비기 때문에 특별히 처리해줘야 한다.

 

 

728x90