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
'CODING > C++ STUDY' 카테고리의 다른 글
C++독학 13일차 - C++에서의 파일 입출력 (0) | 2021.08.22 |
---|---|
C++ 독학 12일차 - 가상함수 구현원리, 다중 상속, istream, 형식플래그, streambuf, 조작자 (0) | 2021.08.17 |
C++ 독학 11일차 - 상속, protected, is-a, has-a, virtual (0) | 2021.08.10 |
C++ 독학 10일차 - 캐스팅, C++ 표준 문자열 (0) | 2021.08.07 |
C++ 독학 9일차 - 오버로딩 (0) | 2021.07.29 |