C++(23)
-
C++ STL: 11장 - STL 실전 활용과 추가 팁
11.1 STL의 핵심 요약과 보충 설명STL의 구성 요소를 깊이 이해하면 코드 품질과 효율성을 높이는 데 크게 기여할 수 있습니다. 이 장에서는 이전 장의 내용을 기반으로 추가적인 보충 설명과 실전 활용 팁을 제공합니다.11.1.1 컨테이너 선택 기준 보충컨테이너는 작업의 성격과 데이터 크기에 따라 선택해야 합니다. 아래는 컨테이너 선택 시 고려해야 할 주요 기준입니다:삽입/삭제 빈도와 위치:끝에서의 삽입/삭제:추천: std::deque, std::list이유: std::deque는 여러 블록으로 구성되어 메모리 리얼로케이션 부담이 적고, std::list는 연결 리스트 구조로 끝에서의 삽입/삭제가 O(1)로 매우 효율적입니다.중간 또는 앞에서의 삽입/삭제:추천: std::list이유: 연결 리스트 구..
2025.02.26 -
C++ STL: 10장 - STL의 한계와 대안
10.1 STL의 한계STL은 범용적인 라이브러리이지만, 특정 상황에서는 한계가 존재합니다. 이 장에서는 STL의 제약과 이를 극복할 수 있는 방법을 소개합니다.10.1.1 STL 사용 시 문제점실시간 시스템에서의 한계:STL 컨테이너의 동적 메모리 할당은 예측 가능한 성능을 요구하는 시스템에서 문제가 될 수 있습니다.메모리 사용량:STL 컨테이너는 내부 메모리 관리를 위해 추가적인 오버헤드가 발생할 수 있습니다.멀티스레딩 환경:STL은 스레드 안전하지 않으므로, 동기화를 별도로 구현해야 합니다.10.1.2 STL의 확장과 최적화STL의 한계를 극복하기 위해 다음과 같은 방법을 고려할 수 있습니다:사용자 정의 할당자:특정한 메모리 요구 사항에 맞게 할당자를 커스터마이징하여 성능을 최적화합니다.스레드 안전..
2025.02.26 -
C++ STL: 9장 - STL 내부 구현 심화
9.1 STL의 템플릿 메커니즘STL은 템플릿을 기반으로 설계된 라이브러리로, 일반화 프로그래밍(Generic Programming)의 철학을 실현합니다. 이 장에서는 STL의 템플릿 메커니즘과 이를 활용한 고급 기법을 다룹니다.9.1.1 템플릿 메타프로그래밍 (Template Metaprogramming)템플릿 메타프로그래밍은 컴파일 타임에 코드 생성을 수행하는 기법으로, STL 내부에서 자주 활용됩니다.예제: 컴파일 타임 팩토리얼 계산#include template struct Factorial { static constexpr int value = N * Factorial::value;};template struct Factorial { static constexpr int value =..
2025.02.26 -
C++ STL: 8장 - STL과 고급 템플릿 기법
8.1 템플릿의 기본 개념템플릿은 일반화 프로그래밍(generic programming)을 지원하기 위해 C++에서 제공하는 강력한 기능입니다. STL은 템플릿을 기반으로 설계되어, 컨테이너, 알고리즘, 반복자 등이 다양한 데이터 타입에서 동작할 수 있도록 일반화되어 있습니다.8.1.1 함수 템플릿다양한 타입의 데이터를 처리하는 함수 작성에 사용됩니다.예제:#include template T add(T a, T b) { return a + b;}int main() { std::cout 8.1.2 클래스 템플릿데이터 타입에 의존하지 않는 클래스 작성에 사용됩니다.예제:#include template class Box {private: T value;public: Box(T v) : v..
2025.02.26 -
C++ STL: 7장 - STL과 멀티스레딩 활용
7.1 C++과 멀티스레딩 개요C++11부터 표준 라이브러리에서 멀티스레딩 지원이 강화되었습니다. STL은 멀티스레딩을 직접적으로 지원하지는 않지만, C++ 표준 스레딩 라이브러리(, , 등)와 함께 사용하여 멀티스레딩 환경에서 STL 컨테이너와 알고리즘을 효과적으로 활용할 수 있습니다.7.2 STL 컨테이너와 멀티스레딩7.2.1 컨테이너의 스레드 안전성STL 컨테이너는 기본적으로 스레드 안전하지 않습니다.단일 스레드에서 사용하거나, 여러 스레드가 컨테이너에 읽기만 수행할 때는 안전합니다.쓰기 작업이 포함된 경우, 동기화(std::mutex)가 필요합니다.7.2.2 컨테이너 동기화 기법뮤텍스 사용: 스레드 간 동기화를 위해 std::mutex를 사용하여 데이터 접근을 제어합니다.예제:#include #..
2025.02.26 -
C++ STL: 6장 - STL 컨테이너 성능 비교와 활용 사례
6.1 STL 컨테이너 성능 비교STL에서 제공하는 다양한 컨테이너는 각기 다른 데이터 구조와 알고리즘에 기반을 두고 설계되었기 때문에, 성능이 작업 유형과 데이터의 크기에 따라 크게 달라질 수 있습니다. 이 장에서는 주요 STL 컨테이너 간의 성능 차이를 이해하고, 각각의 컨테이너가 적합한 상황을 설명합니다.6.1.1 순차 컨테이너 성능 비교 컨테이너 삽입/삭제 (중간)삽입/삭제 (끝)검색임의 접근std::vector느림 (O(n))평균 O(1), 최악 O(n)느림 (O(n))빠름 (O(1))std::deque느림 (O(n))빠름 (O(1))느림 (O(n))빠름 (O(1))std::list빠름 (O(1))빠름 (O(1))느림 (O(n))불가능std::array고정 크기고정 크기느림 (O(n))빠름 (O..
2025.02.26