본문 바로가기

c++53

[C++] Function Templates References Ch 1, C++ Templates The Complete Guide 2nd Contents Basic of function templates Two-Phase Translation Template argument deduction Multiple template parameters Default template arguments Overloading function templates Function Templates 함수 템플릿은 다른 타입들에 대해 호출될 수 있는 기능적인 동작을 제공합니다. 즉, 함수 템플릿은 함수족(a family of functions)라고 표현할 수 있습니다. 아마 잘 아시다시피 템플릿 함수는 함수의 몇몇 요소의 타입이 결정되지 않았다는 것만을 제외하면 일반.. 2022. 12. 28.
[C++] Error Handling (1) References Professional C++ https://en.cppreference.com/w/ Contents Errors and Exceptions Exception Mechanics Exceptions and Polymorphism Rethrowing Exceptions 프로그래밍을 하다보면 파일을 열 수 없거나, 네트워크 연결이 끊기거나, 사용자가 잘못된 값을 입력하는 등의 에러가 발생하기 마련입니다. C++은 이렇게 예상치 못한 예외적인 상황에 대처하도록 Exception(익셉션, 예외)이라는 기능을 제공합니다. 이번 포스팅에서는 에러 처리를 반영한 개발 방법과 관련 문법, 기능에 대해서 알아보겠습니다. 1. Errors and Exceptions 완전히 독립적으로 실행되는 프로그램은 .. 2022. 3. 6.
[C++] 멀티스레딩 프로그래밍 (2) References Professional C++ https://en.cppreference.com/w/ Contents Mutual Exclusion Condition Variable Futures (std::promise, std::future) 멀티스레드 Logger 클래스 예제 [C++] 멀티스레딩 프로그래밍 (1) 지난 포스팅에 이어서 계속해서 C++에서의 멀티스레딩 프로그래밍에 대해 알아보겠습니다. 이전 포스팅과 마찬가지로 C++에서 제공하는 기능들에 대해 살펴보고, 이후에 사용하는 예제들을 살펴보겠습니다. 4. Mutual Exclusion 멀티스레드 프로그램을 작성할 때는 반드시 연산의 순서를 신중하게 결정해야 합니다. 스레드에서 공유 데이터를 읽거나 쓰면 문제가 발생할 수 있기 때문입니다.. 2022. 3. 3.
[C++] 멀티스레딩 프로그래밍 (1) References Professional C++ https://en.cppreference.com/w/ Contents 멀티스레드 프로그래밍 개념 Thread Atomic Operations Library 이번 포스팅에서는 C++의 멀티스레딩 프로그래밍에 대해서 알아보려고 합니다. [C++] thread [C++] mutex [C++] 생산자(Producer) / 소비자(Consumer) 패턴 [C++] 비동기(Asynchronous) 실행 예전에 위의 포스팅들을 통해서 살펴봤었는데, 이번 포스팅을 통해서 전체적으로 정리해보려고 합니다. 멀티스레딩 프로그래밍(multithreaded programming)은 프로세서 유닛이 여러 개 장착된 컴퓨터 시스템에서 중요한 기법이며, 이를 이용하여 시스템에 있는.. 2022. 3. 3.
[C++] 템플릿(Template) 심화편 (2) References Professional C++ https://en.cppreference.com/w/ Contents Template Recursion (템플릿 재귀) Variadic Templates (가변인수 템플릿) Fold Expression (폴드 표현식) MetaProgramming (메타프로그래밍) Type Traits [C++] 템플릿 (Templates) [C++] 템플릿(Template) 심화편 (1) 지난 포스팅에 이어서 계속해서 템플릿에 대해 알아보도록 하겠습니다. 4. Template Recursion C++의 템플릿은 단순히 클래스나 함수를 정의하는 것보다 더 많은 것들을 할 수 있습니다. 그중 하나가 바로 템플릿 재귀입니다. 구체적인 구현 방법을 살펴보기 전에 먼저 템플릿 .. 2022. 3. 1.
[C++] 템플릿(Template) 심화편 (1) References Professional C++ https://en.cppreference.com/w/ Contents More About Template Parameters Class Template Partial Specialization (부분 특수화) Function Partial Specialization with Overloading [C++] 템플릿 (Templates) 위 포스팅에서 클래스와 함수 템플릿을 어떻게 사용할 수 있는지에 대해서 살펴봤습니다. 표준 라이브러리의 내부 작동 방식을 파악하거나 간단한 클래스를 직접 정의할 수 있는 정도로만 템플릿을 사용하고자 한다면 이번 포스팅에 대한 내용은 모르더라도 괜찮을 것입니다. 만약 템플릿의 세부사항과 한계들을 알고 싶다면 이번 포스팅의 내.. 2022. 3. 1.
[C++] 난수(random number) - random 라이브러리 References Professional C++ https://en.cppreference.com/w/ Contents C-스타일 난수 생성 Random Number Engines Random Number Engine Adapters Predefined Engines and Engine Adapters 난수 생성 예제 C++의 난수 생성 라이브러리는 다양한 알고리즘과 분포들을 사용하여 난수를 생성할 수 있습니다. 이 라이브러리는 헤더 파일에 정의되어 있으며, std 네임스페이스에 속합니다. 여기에는 크게 3개의 컴포넌트가 존재합니다: engines, engine adapters, distributions. 난수 엔진(engine)은 실제 난수를 생성하고 다음 난수를 생성하기 위한 상태를 저장합니다. 분.. 2022. 2. 28.
[C++] chrono 라이브러리 (Date, Time 유틸리티) References Professional C++ https://en.cppreference.com/w/ Contents Compile-Time rational numbers (컴파일 시간 유리수, ratio) Duration Clock Time Point 이번 포스팅에서는 C++ 표준 라이브러리에서 시간 관련 기능인 chrono 라이브러리에 대해서 알아보겠습니다. C++의 chrono 라이브러리는 time과 date를 다루는 클래스로 다음과 같은 요소들로 구성되어 있습니다. Durations Clocks Time points Dates (C++20) Time zones (C++20) 모두 에 정의되었으며 std::chrono 네임스페이스에 속합니다. 이번 포스팅에서는 chrono 라이브러리 중에서도 시.. 2022. 2. 27.
[C++] String Localization References Professional C++ https://en.cppreference.com/w/ Contents Wide Characters 스트링 리터럴 현지화 Locales and Facets C나 C++ 프로그래밍을 처음 배울 때 각 문자를 아스키(ASCII) 코드를 표현하는 바이트로 취급했습니다. 아스키 코드는 7바이트로 구성되었으며 주로 8비트의 char 타입으로 표현합니다. 하지만 유명한 프로그램들은 전 세계적으로 사용됩니다. 따라서 프로그램을 작성할 때는 당장 전 세계 사용자를 대상으로 삼지는 않더라도 나중에 Localization(현지화)를 지원하거나 다양항 로케일(locale)을 인식하게 만들 수 있도록 디자인하는 것이 좋습니다. 1. Wide Characters 모든 언어가 한.. 2022. 2. 27.
[C++] 알고리즘 (Algorithms) (3) References Professional C++ https://en.cppreference.com/w/ Contents 연산 알고리즘 (Operational Algorithms) : for_each, for_each_n 분할 알고리즘 (Partition Algorithms) : partition_copy, partition 정렬 알고리즘 (Sorting Algorithms) : sort, stable_sort, is_sorted, is_sorted_until, nth_element 이진 탐색 알고리즘 (Binary Search Algorithms) : binary_search, lower_bound, upper_bound, equal_range 집합 알고리즘 (Set Algorithms) : inclu.. 2022. 2. 26.