블로그
-
C++20 달력과 시간대: year_month_day와 zoned_time 사용법
C++20 chrono의 year_month_day로 날짜를 표현하고 weekday로 요일을 계산하며, zoned_time으로 시간대를 변환하는 방법을 다음 영업일 계산, 회의 시간 변환, 반복 일정 예제로 설명합니다.
-
C++20 std::barrier와 std::latch: 스레드 동기화 지점 만들기
C++20 std::latch로 여러 스레드의 준비 완료를 한 번 기다리고, std::barrier로 단계마다 반복 동기화하며 완료 콜백을 실행하는 방법을 병렬 초기화, 파이프라인, 게임 프레임 동기화 예제로 설명합니다.
-
C++ 성능 측정: chrono와 Google Benchmark로 신뢰할 수 있는 벤치마크 만들기
std::chrono 고해상도 시계로 C++ 코드를 측정할 때 워밍업, 반복 실행, 통계 수집을 어떻게 구성하는지 설명하고, Google Benchmark의 DoNotOptimize와 사용자 정의 카운터로 정렬·컨테이너·해시 함수를 비교하는 방법을 다룹니다.
-
C++ replace·replace_if·replace_copy: 값 치환과 transform 중 무엇을 쓸까
std::replace와 replace_if로 원본 범위의 값을 바꾸고, replace_copy·replace_copy_if로 원본을 유지한 채 결과를 새로 만드는 방법, std::string::replace와의 혼동, transform과의 선택 기준을 데이터 정제 예제로 설명합니다.
-
C++ reverse·rotate·reverse_copy: 범위 뒤집기와 회전 알고리즘 사용법
std::reverse로 범위를 뒤집고 reverse_copy로 원본을 유지한 채 역순 사본을 만들며, rotate로 배열을 회전하는 방법을 팰린드롬 검사, LeetCode 189 배열 회전, 151 단어 순서 뒤집기 예제로 설명합니다.
-
C++ set_union·set_intersection·set_difference: 정렬된 범위의 집합 연산
정렬된 범위에서 set_union·set_intersection·set_difference·set_symmetric_difference로 합·교·차집합을 구하고 includes로 포함 관계를 검사하는 방법을 권한 관리, 태그 필터링, 변경 사항 추적 예제로 설명합니다.
-
C++ std::copy·copy_if·copy_backward: 목적지 크기, 겹치는 범위, back_inserter
std::copy·copy_if·copy_n·copy_backward·move를 언제 골라 쓰는지 벡터 복제와 필터링 예제로 설명하고, 목적지 크기 부족, 겹치는 범위, move 후 원본 상태, back_inserter 같은 출력 반복자 선택 문제를 다룹니다.
-
C++ make_heap·push_heap·pop_heap: priority_queue 대신 힙을 직접 다룰 때
std::make_heap·push_heap·pop_heap·sort_heap으로 벡터를 직접 힙으로 관리하는 방법, 최대 힙과 최소 힙을 만드는 비교자, priority_queue와 비교한 장단점, Top-K 추출과 힙 정렬 구현을 예제로 설명합니다.
-
C++ <numeric> 알고리즘: accumulate·reduce·scan의 차이와 함정
<numeric>의 accumulate와 C++17 reduce·transform_reduce의 차이, inner_product, partial_sum과 inclusive·exclusive_scan, adjacent_difference, iota를 통계·복리 이자·이동 평균 계산 예제로 설명합니다.
-
C++ next_permutation으로 순열·조합 만들기: 정렬 후 do-while 패턴
next_permutation과 prev_permutation으로 사전순 순열을 만드는 방법을 설명하고, 정렬부터 하고 do-while로 돌리는 패턴, 문자열 순열, n개 중 k개 순열과 조합 생성, 완전 탐색에 적용하는 예제를 다룹니다.