본문 바로가기

전체 보기206

Modern C++ : std::mt19937 (11, 14, 17, 20) 랜덤 숫자 생성 (Random Number Generation) 개요C++에서의 랜덤 숫자 생성은 헤더를 통해 제공되는 다양한 유틸리티를 사용하여 구현할 수 있습니다. C++11부터 도입된 이 라이브러리는 예측 가능한 의사 난수 생성기와 다양한 분포를 제공합니다. C++ 버전별 주요 키워드 도입 시기C++11: 헤더, std::random_device, std::mt19937, std::uniform_int_distribution 등 도입C++14: std::make_unique를 사용한 랜덤 엔진 생성이 용이해짐C++17: std::sample 알고리즘 추가C++20: std::uniform_random_bit_generator 개념(concept) 도입 내용 설명C++에서 랜덤 숫자 생성을 위해서.. 2025. 9. 4.
Modern C++ : std::filesystem std::filesystem 개요std::filesystem은 C++17에서 도입된 파일 시스템 라이브러리로, 파일과 디렉토리 조작을 위한 다양한 기능을 제공합니다. 이 라이브러리는 플랫폼 독립적인 방식으로 파일 시스템을 다룰 수 있게 해주며, 경로 조작, 파일 속성 조회, 디렉토리 순회 등의 작업을 수행할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++17: std::filesystem 네임스페이스와 주요 클래스들(path, directory_iterator 등)이 표준 라이브러리에 추가C++20: std::filesystem::path에 operator (three-way comparison) 추가 내용 설명std::filesystem은 다음과 같은 주요 기능을 제공합니다:경로 조작: pat.. 2025. 9. 3.
Modern C++ : std::ostream & std::istream (98, 11, 17, 20) std::ostream & std::istream 개요std::ostream과 std::istream은 C++ 표준 라이브러리에서 제공하는 입출력 스트림 클래스로, 각각 출력과 입력을 담당합니다. 이들은 형식화된 입출력과 형식화되지 않은 입출력 모두를 지원하며, 파일, 메모리 버퍼, 표준 입출력 등 다양한 소스/대상과 연동할 수 있습니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 std::ostream, std::istream 클래스 도입C++11: 이동 생성자/대입 연산자 추가, noexcept 지정자 추가C++17: std::byte 지원 추가C++20: std::format과의 통합, synchronized_ 접두사 출력 함수 추가 내용 설명std::ostream과 std::istrea.. 2025. 9. 2.
Modern C++ : std::string_view (17, 20) std::string_view 개요std::string_view는 C++17에서 도입된 문자열 뷰 클래스로, 문자열 데이터에 대한 읽기 전용 뷰를 제공합니다. 메모리 할당 없이 문자열을 참조할 수 있어 성능이 중요한 상황에서 유용하게 사용됩니다. C++ 버전별 주요 키워드 도입 시기C++17: std::string_view가 표준 라이브러리에 추가됨C++20: std::string_view에 starts_with(), ends_with() 등의 편의 함수 추가 내용 설명std::string_view는 다음과 같은 특징을 가집니다:메모리 할당 없음: 문자열 데이터를 소유하지 않고 참조만 함가볍고 빠름: std::string보다 가볍고 복사 비용이 저렴유효성 주의: 참조하는 문자열의 수명이 string_vi.. 2025. 9. 1.
Modern C++ : Small String Optimization (SSO) Small String Optimization (SSO) 개요Small String Optimization(SSO)은 std::string 클래스에서 짧은 문자열을 저장할 때 힙 할당을 피하고 스택 메모리를 활용하여 성능을 최적화하는 기법입니다. 이 기법은 문자열의 길이가 특정 임계값(SSO capacity) 이내일 때 적용됩니다. C++ 버전별 주요 키워드 도입 시기C++98: std::string의 구현 세부사항으로 SSO가 도입되기 시작 (표준화된 사양은 아님)C++11: 이동 생성자/대입 연산자와 함께 SSO 최적화가 더욱 중요해짐C++17: std::string_view 도입으로 SSO와 함께 사용할 때의 최적화 기회 증가 내용 설명SSO는 짧은 문자열을 다룰 때 다음과 같은 이점을 제공합니다:.. 2025. 8. 31.
Modern C++ : std::string (98, 11, 17, 20) std::string 개요std::string은 C++ 표준 라이브러리에서 제공하는 문자열 클래스로, 문자열 조작을 위한 다양한 기능을 제공합니다. 메모리 관리를 자동으로 처리하며, 안전하고 편리한 문자열 처리가 가능합니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 std::string 클래스 도입C++11: 이동 생성자/대입 연산자, shrink_to_fit() 등 추가C++17: string_view와의 상호작용 추가, 비멤버 std::size() 등 추가C++20: starts_with(), ends_with() 메서드 추가 내용 설명std::string은 다음과 같은 주요 특징을 가집니다:동적 메모리 관리: 문자열 길이에 따라 자동으로 메모리 할당/해제문자열 조작: 다양한 멤버 함수를.. 2025. 8. 30.
Modern C++ : Custom Iterator Utilities (98, 11, 17, 20) Custom Iterator Utilities in C++ 개요이 문서는 C++ 표준 라이브러리의 반복자 유틸리티 함수들을 직접 구현한 예제를 다룹니다. advance, distance, next, prev 함수들을 구현하여 반복자의 동작 방식을 이해하고, 이를 활용하는 방법을 설명합니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 반복자 유틸리티 도입C++11: std::next(), std::prev() 함수 추가C++17: std::size()와 같은 반복자 관련 유틸리티 추가C++20: std::ranges와 함께 개선된 반복자 지원 내용 설명구현된 타입과 함수들DifferenceType반복자 간의 거리를 표현하는 정수 타입입니다.실제 정의: using DifferenceType = I.. 2025. 8. 29.
Modern C++ : std::inserter (98, 11, 17) std::inserter 개요std::inserter는 C++ 표준 라이브러리의 반복자 어댑터로, 알고리즘이 컨테이너의 특정 위치에 요소를 삽입할 수 있게 해주는 삽입 반복자(insert iterator)를 생성합니다. 이는 표준 알고리즘들이 기존 요소를 덮어쓰는 대신 컨테이너에 새 요소를 삽입할 수 있게 해줍니다. C++ 버전별 주요 키워드 도입 시기C++98: 최초 도입C++11: 우측값 참조와 이동 의미론 지원C++17: insert_iterator에 대한 CTAD(Class Template Argument Deduction) 지원 내용 설명std::inserter는 두 개의 인자를 받는 함수 템플릿입니다:컨테이너: 요소가 삽입될 컨테이너위치: 삽입이 발생할 위치를 가리키는 반복자std::inser.. 2025. 8. 28.
Modern C++ : iterators (98, 11, 17, 20) Iterators in C++ 개요Iterator는 C++ STL(Standard Template Library)에서 컨테이너의 요소들을 순회하고 접근하기 위한 추상화된 방법을 제공하는 객체입니다. 포인터와 유사한 동작을 하지만, 컨테이너의 내부 구현을 캡슐화하여 일관된 인터페이스를 제공합니다. C++ 버전별 주요 키워드 도입 시기C++98: 기본 반복자 개념 도입C++11: cbegin(), cend(), crbegin(), crend() 추가C++17: std::size(), std::empty(), std::data() 등 반복자 관련 유틸리티 추가C++20: std::ranges 도입으로 더 나은 반복자 지원 내용 설명반복자 카테고리입력 반복자 (Input Iterator): 읽기 전용, 순방향 .. 2025. 8. 27.