블로그
-
C++ 성능 측정: chrono와 Google Benchmark로 신뢰할 수 있는 벤치마크 만들기
std::chrono 고해상도 시계로 C++ 코드를 측정할 때 워밍업, 반복 실행, 통계 수집을 어떻게 구성하는지 설명하고, Google Benchmark의 DoNotOptimize와 사용자 정의 카운터로 정렬·컨테이너·해시 함수를 비교하는 방법을 다룹니다.
-
C++ std::bind와 placeholders: 부분 적용, 멤버 함수 바인딩, 람다로 바꿀 때
std::bind로 함수 인자를 미리 고정하는 부분 적용, placeholders로 인자 순서를 바꾸는 방법, 멤버 함수 바인딩, 이벤트 핸들러와 콜백 시스템 예제를 설명하고, 같은 일을 람다로 옮겼을 때와 비교합니다.
-
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++ 집합체 초기화: 집합체 조건, 중괄호 초기화, C++20 지정 초기화 순서 규칙
C++ 집합체가 되기 위한 조건과 중괄호로 구조체·배열·중첩 구조체를 초기화하는 방법, C++20 지정 초기화의 순서 규칙과 기본값 처리, 설정 구조체와 테스트 데이터에 집합체를 활용하는 패턴을 예제로 설명합니다.
-
C++ std::copy·copy_if·copy_backward: 목적지 크기, 겹치는 범위, back_inserter
std::copy·copy_if·copy_n·copy_backward·move를 언제 골라 쓰는지 벡터 복제와 필터링 예제로 설명하고, 목적지 크기 부족, 겹치는 범위, move 후 원본 상태, back_inserter 같은 출력 반복자 선택 문제를 다룹니다.
-
C++ count·count_if와 all_of·any_of·none_of로 조건 집계하기
std::count로 특정 값의 개수를 세고 count_if에 람다를 넘겨 조건별로 집계하는 방법, 구조체 필드 기준 카운트, all_of·any_of·none_of로 조건을 검사하는 법을 통계 유틸리티 예제와 함께 설명합니다.
-
C++ fill·generate·iota로 범위 채우기: 테스트 데이터 생성 예제
std::fill과 fill_n으로 범위를 같은 값으로 채우고, generate에 람다나 함수 객체를 넘겨 난수·ID·구조체 데이터를 만들며, iota로 연속 값을 생성하는 방법을 테스트 데이터 생성기 예제와 함께 설명합니다.
-
C++ make_heap·push_heap·pop_heap: priority_queue 대신 힙을 직접 다룰 때
std::make_heap·push_heap·pop_heap·sort_heap으로 벡터를 직접 힙으로 관리하는 방법, 최대 힙과 최소 힙을 만드는 비교자, priority_queue와 비교한 장단점, Top-K 추출과 힙 정렬 구현을 예제로 설명합니다.