C++ 72

10. STL - (3) 반복자

STL Iterator◆ 반복자(iterator) ● 컨테이너의 요소에 대해 "추상적"인 접근을 가능하게 하는 기능 ☞ 추상적 → 컨테이너가 무슨 종류인지, 어떻게 구현되어 있는지 알 필요 없음 ● 포인터와 유사하게 사용 가능 ● 대부분 컨테이너는 반복자를 사용해 순환(traverse) 가능 ☞ stack, queue는 예외📚 반복자 (Iterator)🎯 정의반복자는 STL 컨테이너의 요소들에 대해 추상적인 방식으로 접근할 수 있게 해주는 객체이다.추상적이라는 의미는, 컨테이너가 어떤 구조인지 모르더라도동일한 방식(즉, begin ~ end 반복자)으로 접근이 가능하다는 것이다.for (iterator it = container.begin();..

C++/C++ : Study 2025.07.17

10. STL - (2) 컨테이너

STL◆ 클래스 템플릿 매개 변수 ● Sequential 컨테이너 ☞ 삽입 순서를 유지하는 컨테이너 ☞ array, vector, list, forward_list, deque ● Assicuative 컨테이너 ☞ 순서가 없거나, 미리 정해진 규칙에 따라 저장하는 컨테이너 ☞ set, multi set, map, multi map ● 컨테이너 어댑터 ☞ 다른 컨테이너들의 변형 응용 ☞ stack, queue, priority queue📚 STL 컨테이너STL의 컨테이너(container)는 데이터를 저장하기 위한 객체이며, 다음 세 가지 유형으로 분류된다.◆ 1..

C++/C++ : Study 2025.07.09

10. STL - (1) 개요

Standard Template Library (STL)📚 C++ STL 개요C++ STL은 Standard Template Library의 약자로, C++ 표준 라이브러리에 포함된 자료구조와 알고리즘의 모음이다.STL은 기본적으로 템플릿 기반으로 구현되어 있으며, 자료형에 독립적인 코드 작성을 가능하게 한다. 따라서 템플릿을 잘 이해하면 STL의 구조와 동작 방식을 더욱 쉽게 파악할 수 있다.템플릿은 C++에서 제네릭 프로그래밍을 지원하는 핵심 기능으로, STL은 이 기능을 바탕으로 구성되어 있다. 따라서 STL을 제대로 활용하기 위해서는 템플릿에 대한 이해가 선행되어야 한다.프로그래밍 업무에서 STL은 매우 자주 사용되며, 개발자의 생산성을 높이는 데 큰 역할을 한다. 특히 반복적인 자료구조 구현 ..

C++/C++ : Study 2025.07.07

9. Generic Programming과 템플릿 - 복습 퀴즈

🧠 템플릿 개념 복습 OX 퀴즈1.함수 템플릿은 반환형, 인자 타입, 함수 내부 연산까지 모두 템플릿 인자를 사용할 수 있다.✅ O→ T func(T a, T b) 와 같이 모든 위치에서 T를 사용할 수 있음2.클래스 템플릿은 객체를 생성할 때 안에 타입을 명시하지 않아도 된다.⛔ X→ (C++17 이상은 자동 추론 가능하지만, 기본적으로 명시 필요)3.템플릿 특수화는 오버로딩과 완전히 동일하게 처리되며, 내부 구조 변경에는 영향을 주지 않는다.⛔ X→ (특수화는 내부 구현을 완전히 바꿀 수 있음, 오버로딩은 함수 전체가 별도)4.template 처럼 int를 템플릿 인자로 사용하는 것은 잘못된 문법이다.⛔ X→ (int N은 non-type 템플릿 인자로 C++에서 정식 지원됨)5.Item와 Ite..

C++/C++ : Study 2025.07.01

9. Generic Programming과 템플릿 (6) - Non-템플릿 인자

Generic Programming using Template중요 Part이다.★★★★★◆ 클래스 템플릿 매개 변수 ● 타입이 아닌 다른 매개변수를 사용할 수 있음(non-type template argument) ☞ 아래 예제에서 N의 값을 템플릿 클래스의 사용 시에 직접 명시해 줌template class Array { int size = N; T Values[N];};* 정적 배열이기 때문에 고정된 크기가 필요해서, 숫자 N 자체를 템플릿 인수로 같이 받도록 정의함!int main(){ Array nums; Array nums2;}해당 코드를 보고 컴파일러는 아래처럼 작성한다.class Array { int size = 5; int Values..

C++/C++ : Study 2025.07.01

9. Generic Programming과 템플릿 (5) - 클래스 템플릿

Generic Programming using Template◆ 클래스 템플릿 ● 함수 템플릿과 유사한, 클래스에 대한 템플릿 구현 지원 ● 클래스의 "설계도" ● 컴파일러가 타입에 따라 적절한 클래스를 생성해 줌📘 핵심 정리: 클래스 템플릿 기본 개념🎯 클래스 템플릿이란?타입에 관계없이 사용할 수 있도록 클래스의 설계도(Template) 를 만드는 것template class MyBox {private: T data;public: MyBox(T value) : data(value) {} void print() { std::cout T는 자료형을 나타내는 템플릿 인자클래스 전체에서 T는 타입 자리에 사용됨 (멤버 변수, 멤버 함수 등)함수 템플릿과 ..

C++/C++ : Study 2025.07.01

9. Generic Programming과 템플릿 (4) - 템플릿 인자 & 특수화

Generic Programming using Template◆ 템플릿의 다중 매개변수 ● 서로 다른 이름을 사용하여 다중 매개변수를 정의 가능 ● 매개변수가 다르다면 서로 타입이 다를 수 있다template void func(T1 a, T2 b){ std::cout (10, 20.05);// T1은 int 이고 T2는 double 인 func 함수가 생성된다.func('A', 12.4);// 타입을 명시하진 않았지만, T1은 char 이고 T2가 double 인 것이 명확하므로 해당하는 함수가 생성된다.T1은 int 이고 T2는 double 인 func 함수가 생성된다.타입을 명시하진 않았지만, T1은 char 이고 T2가 double 인 것이 명확하므로 해당하는 함수가 생성된다.📘..

C++/C++ : Study 2025.06.30

9. Generic Programming과 템플릿 (3) - 함수 템플릿

Generic Programming using Template◆ C++ 템플릿 ● "설계도" 개념 ● 함수 템플릿과 클래스 템플릿 구현을 지원 ● 어떤 데이터 타입이든, 컴파일러가 적절한 함수 / 클래스를 설계도를 기반으로 생성한다 ☞ 다른 언어의 경우 런타임에서 생성하는 경우도 있다 ☞ 사용하지 않는 경우 생성하지 않는다 ● 제네릭 프로그래밍 / 메타 프로그래밍📘 핵심 요약: 템플릿을 이용한 제너릭 프로그래밍 개념✅ 템플릿이란?C++ 템플릿은 데이터 타입에 관계없이 동작하는 코드의 설계도이다.즉, 하나의 템플릿 코드를 바탕으로 타입별 함수나 클래스 정의가 자동으로 생성된다.template T max(T a, T b) { re..

C++/C++ : Study 2025.06.26

9. Generic Programming과 템플릿 (2) - 매크로 사용

Generic Programming using Macro◆ 매크로를 사용한 제네릭 프로그래밍◆ 매그로 ( #define ) ● 코드의 단순 대체 (복붙)#define MAX_SIZE 100 #define PI 3.14159📘 핵심 요약: 매크로를 사용한 제너릭 프로그래밍 (1) – #define의 기본 역할✅ 매크로란?C++에서 #으로 시작하는 코드는 전처리기(preprocessor)에 의해 처리된다.대표적인 예가 #include, 그리고 이번에 다룰 #define이다.✅ 빌드 과정에서의 위치전처리기: 컴파일 이전에 코드에 대해 대체, 제거 등의 작업을 수행한다.#define은 이 전처리 과정에서 코드에 있는 특정 식별자(identifier)를 고정된 값으로 대체한다.✅ #define 예제#..

C++/C++ : Study 2025.06.25