본문 바로가기

프로그래밍206

[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.
[C++] 알고리즘 (Algorithms) (2) References Professional C++ https://en.cppreference.com/w/ Contents 불변형 순차 알고리즘 (non-modifying sequence algorithm) 탐색 알고리즘 (default_searcher, boyer_moore_searcher, boyer_moore_horspool_searcher) 비교 알고리즘 카운팅 알고리즘 가변형 순차 알고리즘 (modifying sequence algorithm) transform, transform copy, copy_backward, copy_if, copy_n move, move_backward replace, replace_if remove, remove_if, erase(C++20), erase_if(C++.. 2022. 2. 26.
[C++] 알고리즘 (Algorithms) (1) References Professional C++ https://en.cppreference.com/w/ Contents C++ Algorithms find(), find_if(), accumulate() 알고리즘과 이동 의미론 알고리즘 콜백 복사 문제 표준 라이브러리에서는 여러 가지 유용한 제너릭 데이터 구조(컨테이너)를 제공합니다. 다른 라이브러리와는 달리 표준 라이브러리는 여기서 더 나아가 거의 모든 컨테이너에 적용할 수 있는 제너릭 알고리즘을 다양하게 제공합니다. 이러한 알고리즘을 활용하면 컨테이너에 담긴 원소를 검색하고, 정렬하고, 가공하고, 다양한 연산을 수행할 수 있습니다. 표준 라이브러리 알고리즘의 가장 큰 장점은 각 원소의 타입이나 컨테이너의 타입과는 독립적이라는 점입니다. 게다가 모든 .. 2022. 2. 26.
[C++] 템플릿 (Templates) References Professional C++ https://en.cppreference.com/w/ Contents 클래스 템플릿 (Class Template) 템플릿 특수화 (Template Specialization) 상속 vs 특수화 비교 함수 템플릿 변수 템플릿 C++은 언어 차원에서 객체지향 프로그래밍뿐만 아니라 제너릭 프로그래밍(generic programming)도 지원합니다. 제너릭 프로그래밍의 목적은 코드를 재사용할 수 있게 작성하는 것입니다. C++에서 제너릭 프로그래밍을 위해 제공하는 핵심 도구는 템플릿입니다. 엄밀히 말하면 템플릿은 객체지향 기법에 속하지는 않지만 객체지향 프로그래밍에서 함께 적용하면 강력한 효과를 발휘합니다. 이번 포스팅부터 템플릿에 대한 기본적인 내용들에 대.. 2022. 2. 24.