📅 학습 날짜: 2026년 5월 6일
- 함수 오버로딩 (Function Overloading)
동일한 이름의 함수를 매개변수에 따라 여러 개 정의하는 기술입니다.
✅ 오버로딩 성립 조건
매개변수의 타입이 다른 경우
매개변수의 개수가 다른 경우
❌ 오버로딩이 불가능한 경우 (모호성 발생)
타입 변환의 모호성: int가 double과 long 둘 다로 변환 가능할 때 컴파일러는 방황합니다.
디폴트 매개변수: 인자를 하나 생략했을 때, 디폴트 값이 있는 함수와 없는 함수가 겹치면 에러가 발생합니다.
포인터 vs 배열: int*와 int[]는 실질적으로 같은 타입으로 취급됩니다.
반환 타입만 다른 경우: 함수 호출 시 이름과 인자만 보고 판단하므로, 리턴 타입만으로는 구분이 불가능합니다.
- 템플릿 (Template)
데이터 타입을 일반화하여 하나의 코드로 다양한 타입을 처리하는 '설계도'입니다.
함수 템플릿: add
클래스 템플릿: 어떤 타입이든 담을 수 있는 배열 클래스 등을 만들 때 유용합니다.
- STL(Standard Template Library) 기초
🔹 벡터 (std::vector)
배열과 유사하지만 크기가 유동적인 동적 배열 컨테이너입니다.
push_back(): 끝에 데이터 추가
pop_back(): 마지막 데이터 제거
size(): 현재 들어있는 원소 개수 확인
erase(): 특정 위치 데이터 삭제 (성능 저하 주의)
🔹 맵 (std::map)
키(Key)-값(Value) 쌍을 저장하며, 키를 기준으로 자동 정렬되는 컨테이너입니다.
특징: 중복 키 허용 안 함, 오름차순 정렬.
검색: find(key)를 통해 데이터를 빠르게 찾을 수 있습니다.
- 알고리즘 (Algorithm) & 반복자 (Iterator)
⚙️ 정렬과 검색
sort(): 데이터를 정렬합니다. 사용자 정의 비교 함수(compare)를 통해 정렬 기준을 바꿀 수 있습니다.
find(): 특정 데이터의 위치를 찾습니다.
📍 반복자 (Iterator)
컨테이너의 원소를 가리키는 '포인터와 유사한 화살표'입니다.
begin(): 첫 번째 요소의 위치
end(): 마지막 요소의 다음 칸 (종료 지점)
*it: 가리키는 위치의 데이터 알맹이(역참조)
장점: vector, list, map 등 어떤 자료구조든 동일한 문법으로 접근 가능하게 해줍니다.
'TIL' 카테고리의 다른 글
| [C++ ] 템플릿(Template)과 STL 컨테이너정리 (0) | 2026.05.08 |
|---|---|
| [C++] 상속과 다형성의 핵심: 추상 클래스부터 가상 소멸자까지 (0) | 2026.05.07 |
| [C++]객체 지향과 메모리 관리 (0) | 2026.05.04 |
| C++ 클래스, 메모리, 그리고 참조 시스템 (0) | 2026.04.30 |
| [TIL] C++ 클래스 기초: 캡슐화와 객체 간 상호작용 (feat. 언리얼 엔진 대비) (0) | 2026.04.29 |