전체 글(131)
-
STL 컨테이너
8.2 STL 컨테이너STL 컨테이너는 데이터를 저장하고 관리하기 위한 다양한 자료구조를 제공합니다.8.2.1 시퀀스 컨테이너(Sequence Containers)요소가 선형 순서로 저장되는 컨테이너입니다.vector가장 많이 사용되는 컨테이너로, 동적 배열을 구현합니다:#include #include int main() { // 벡터 생성 및 초기화 std::vector vec1; // 빈 벡터 std::vector vec2(5, 10); // 5개의 10으로 초기화된 벡터 std::vector vec3 = {1, 2, 3, 4, 5}; // 초기화 리스트 사용 (C++11) // 요소 추가 vec1.pus..
2025.03.28 -
STL (Standard Template Library)
STL (Standard Template Library)STL(Standard Template Library)은 C++ 표준 라이브러리의 핵심 부분으로, 템플릿 기반의 컨테이너, 반복자, 알고리즘을 제공합니다. STL을 사용하면 효율적인 데이터 구조와 알고리즘을 직접 구현할 필요 없이 바로 사용할 수 있어 프로그래밍 생산성이 크게 향상됩니다.8.1 STL 개요8.1.1 STL의 구성 요소STL은 크게 세 가지 주요 구성 요소로 이루어져 있습니다:컨테이너(Containers): 데이터를 저장하고 관리하는 객체반복자(Iterators): 컨테이너의 요소에 접근하고 순회하는 메커니즘알고리즘(Algorithms): 데이터를 처리하는 함수들이 외에도 다음과 같은 구성 요소가 있습니다:함수 객체(Functors):..
2025.03.28 -
챕터7. 실습 문제
7.6 실습 문제문제 1: 범용 스마트 배열 템플릿다양한 타입에 대해 동작하는 동적 배열 클래스를 구현하세요:#include #include #include template class SmartArray {private: T* data; size_t size; size_t capacity; // 용량 확장 void expand(size_t newCapacity) { if (newCapacity init) : size(init.size()), capacity(init.size()) { data = new T[capacity]; // 초기화 리스트의 값으로 배열 초기화 size_t i = 0; f..
2025.03.28 -
템플릿 메타프로그래밍
7.5 템플릿 메타프로그래밍템플릿 메타프로그래밍(TMP)은 C++ 템플릿 시스템을 사용하여 컴파일 시간에 계산을 수행하는 기법입니다:#include #include // 컴파일 시간 팩토리얼 계산template struct Factorial { static constexpr int value = N * Factorial::value;};// 재귀 종료 조건template struct Factorial { static constexpr int value = 1;};// 컴파일 시간 제곱 계산template struct Power { static constexpr int value = N * Power::value;};// 재귀 종료 조건template struct Power { sta..
2025.03.28 -
가변 템플릿(Variadic Templates) (C++11)
7.4 가변 템플릿(Variadic Templates) (C++11)C++11에서는 가변 개수의 템플릿 매개변수를 처리할 수 있는 가변 템플릿이 도입되었습니다:#include #include // 재귀 종료 조건: 매개변수가 없는 경우void print() { std::cout void print(T first, Args... args) { std::cout 0) { std::cout T sum(T value) { return value;}// 가변 매개변수 버전template T sum(T first, Args... args) { return first + sum(args...);}// 가변 템플릿 클래스template class Tuple;// 빈 Tuple 특수화..
2025.03.28 -
비타입 템플릿 매개변수
7.3 비타입 템플릿 매개변수템플릿 매개변수는 타입뿐만 아니라 상수 값도 될 수 있습니다:#include #include // 비타입 템플릿 매개변수를 사용한 고정 크기 배열template class FixedArray {private: T data[Size]; public: // 기본 생성자 FixedArray() { for (size_t i = 0; i init) { size_t i = 0; for (const T& val : init) { if (i = Size) { throw std::out_of_range("인덱스가 범위를 벗어났습니다."); } return data[in..
2025.03.28