Programming Languages(81)
-
함수 객체와 람다 표현식
8.5 함수 객체와 람다 표현식8.5.1 함수 객체(Functors)함수처럼 동작하는 객체입니다:#include #include #include #include // 함수 객체// 사용자 정의 함수 객체class Multiplier {private: int factor; public: Multiplier(int f) : factor(f) {} int operator()(int x) const { return x * factor; }};// 사용자 정의 비교 함수 객체class CompareBySecond {public: template bool operator()(const T& a, const T& b) const { retur..
2025.03.28 -
STL 알고리즘
8.4 STL 알고리즘STL 알고리즘은 컨테이너의 요소를 처리하는 다양한 함수를 제공합니다.8.4.1 비수정 시퀀스 연산요소를 수정하지 않고 조사하는 알고리즘:#include #include #include #include // accumulate// 홀수 여부 판별 함수bool isOdd(int n) { return n % 2 != 0;}int main() { std::vector vec = {5, 7, 3, 1, 9, 2, 8, 4, 6}; // all_of: 모든 요소가 조건을 만족하는지 확인 bool allOdd = std::all_of(vec.begin(), vec.end(), isOdd); std::cout 5; }); if (it2 != ve..
2025.03.28 -
STL 반복자
8.3 STL 반복자반복자(Iterator)는 컨테이너의 요소에 접근하고 순회하는 통일된 방법을 제공합니다.8.3.1 반복자 개념과 카테고리STL은 다음과 같은 반복자 카테고리를 정의합니다:입력 반복자(Input Iterator): 한 번에 한 방향으로만 이동 가능, 읽기 전용출력 반복자(Output Iterator): 한 번에 한 방향으로만 이동 가능, 쓰기 전용순방향 반복자(Forward Iterator): 한 방향으로 여러 번 이동 가능양방향 반복자(Bidirectional Iterator): 양방향으로 이동 가능임의 접근 반복자(Random Access Iterator): 임의의 위치로 바로 이동 가능#include #include #include #include #include // 반복자 ..
2025.03.28 -
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