Kong Eunho

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

2025년 11월 06일 09시
카테고리 - LECTURE, 객체지향프로그래밍II


객체지향프로그래밍II(김정준) 10주차 강의내용

일반화와 템플릿

template <class T> // 템플릿 선언
template <class T1, class T2> // T1과 T2는 다를 수 있음
template <typename T>
void myswap (T & a, T & b) { // 구체화
  T tmp;
  tmp = a;
  a = b;
  b = tmp;
}
template <class T>
T add(T data [], int n) { // 제네릭타입 배열 data
  ...
}



제네릭 클래스

template <class T>
class MyStack { ... }; // 제네릭 클래스 선언

template <class T>
void MyStack<T>::push(T element) { ... } // 제네릭 클래스 구현

MyStack<int> iStack; // 제네릭 클래스 구체화(객체 생성)



C++ 표준 템플릿 라이브러리, STL

STL 컨테이너의 종류
컨테이너 클래스 설명 헤더 파일
vector 가변 크기의 배열을 일반화한 클래스 <vector>
deque 앞뒤 모두 입력 가능한 큐 클래스 <deque>
list 빠른 삽입/삭제 가능한 리스트 클래스 <list>
set 정렬된 순서로 값을 저장하는 집합 클래스. 값은 유일 <set>
map (key, value) 쌍을 저장하는 맵 클래스 <map>
stack 스택을 일반화한 클래스 <stack>
queue 큐를 일반화한 클래스 <queue>
STL iterator의 종류
iterator의 종류 iterator에 ++ 연산 후 방향 read/write
iterator 다음 원소로 전진 read/write
const_iterator 다음 원소로 전진 read
reverse_iterator 지난 원소로 후진 read/write
const_reverse_iterator 지난 원소로 후진 read
STL 알고리즘 함수들
copy merge random rotate
equal min remove search
find move replace sort
max partition reverse swap

vector 컨테이너

vector의 주요 멤버와 연산자
멤버와 연산자 함수 설명
push_back(element) 벡터의 마지막에 element 추가
at(int index) index 위치의 원소에 대한 참조 리턴
begin() 벡터의 첫 번째 원소에 대한 참조 리턴
end() 벡터의 끝(마지막 원소 다음)을 가리키는 참조 리턴
empty() 벡터가 비어 있으면 true 리턴
erase(iterator it) 벡터에서 it가 가리키는 원소 삭제. 삭제 후 자동으로 벡터 조절
insert(iterator it, element) 벡터 내 it 위치에 element 삽입
size() 벡터에 들어 있는 원소의 개수 리턴
operator[]() 지정된 원소에 대한 참조 리턴
operator=() 이 벡터를 다른 벡터에 치환(복사)
vector<int>::iterator it;
it = v.begin();
◀ 이전 글 LECTURE, 서버프로그래밍
프로세스 관리
2025-10-31
목록으로 다음 글 ▶ LECTURE, 서버프로그래밍
소프트웨어 관리
2025-11-07