수업/C++

13강, 14강 템플릿

MDanderson 2024. 11. 30. 10:09

클래스 템플릿

스택클래스템플릿의 생성자에서 매개변수로전달되는 클래스의 객체를 저장할수있는 배열공간을 동적으로 할당할텐데

그때 디폴트 생성자가 필요할텐데 디폴트생성자를 만들지 않아서 에러가 난다.

 

 

Stack<T>의 생성자의 구현부에서  new T[s]; 에서 Person에 디폴트생성자가 필요함

 

 

 

주의 -컴파일할때 값을 알수있게 매개변수를 넣어줘야한다!!

 

 



함수템플릿

 

 

 

 

굳이 T라고 안쓰고 ANY라고 씀

 

 

표준템플릿 라이브러리(STL)

 

 

 

순차컨테이너(선형적인 구조)

 

-벡터 : 크기확장이 가능, 끝에 삽입하는것은 빠르나 중간에 삽입하는것은 느림

-리스트 : 이중연결리스트 (중간삽입이 효율적임)

-데크 : 벡터와 리스트의 혼합형태임

 

연상 컨테이너

 

탐색트리와 같은 인덱스구조를 이용하는 컨테이너

키를 이용한 효율적인 검색기능을 제공

 

-set : 키 객체만 저장 ,키가 중복되지않음

-multiset : 키객체만저장, 같은 키가 중복될 수 있음

-map : 키-값 쌍 저장, 키가중복되지않음

-multimap : 키-값쌍 저장, 키가 중복됨.

 

무순서 연상 컨테이너

-unodered_로시작함

-키를 이용한 검색,   해시함수를 이용해서 계산으로 데이터가 어딨는지 알아냄 

 

컨테이너 어뎁터

 

반복자(iterator)

 

알고리즘

 

 

벡터의 논리적 크기(데이터가 있는 공간) :size()

벡터의 실제로 확보된 메모리크기 : capacity();

 

push_back() :맨뒤에 넣음

pop_back() : 맨뒤값 꺼냄

insert() ,  erase()  에 따라 size()가 증감

capacity의 값은 데이터 추가로 인해 확보된 메모리가 부족할때 확장시킬때 증가함.. 즉 감소는 안함

 


벡터의 반복자

vector<int>::iterator it은  auto it으로 교체할 수 있다.

*it 는 포인터의 값을 읽어내듯이 반복자의 값을 읽어낸다.