C++ Friend 기능의 심층 분석

Friend는 C++에서 논란이 있으면서도 실용적인 가치를 지닌 기능이다. 1. 언어 설계 철학의 차이 C#에서는 private 멤버에 대한 접근이 해당 클래스 내부에서만 허용된다. 하지만 C++은 다른 접근 방식을 취한다: 캡슐화는 절대적 차단이 아닌, 접근 권한의 세밀한 제어를 의미한다. C++에서는 특정 함수나 클래스가 외부에 있더라도 신뢰할 수 있는 경우, 이를 허용 ...

6월 3일 16:32에 게시됨

스택과 큐의 비교 및 구현

스택과 큐는 컴퓨터 과학에서 널리 사용되는 두 가지 기본적인 데이터 구조입니다. 이 글에서는 이 두 데이터 구조에 대해 자세히 설명하고 C++ 예제 코드를 통해 구현 방법을 보여드리겠습니다. 스택 (Stack) 스택은 후입선출(LIFO, Last In First Out) 특성을 가진 데이터 구조로, 한쪽 끝(스택 상단)에서만 삽입과 삭제 연산이 가능합니다. 스택의 기본 연산은 다음과 ...

6월 2일 22:33에 게시됨

C++ STL 알고리즘 완벽 가이드

1. 비수정 시퀀스 알고리즘 이러한 알고리즘은 작업 대상 컨테이너의 요소를 변경하지 않습니다. 1.1 find와 find_if find(begin, end, value): value와 동일한 첫 번째 요소를 찾아 반복자 반환 (못 찾으면 end 반환) find_if(begin, end, predicate): 조건자를 만족하는 첫 번째 요소 찾기 find_end(begin, end, sub_begin, sub_end): 하위 시퀀스가 마지막으로 나타나 ...

6월 1일 02:14에 게시됨

C++ STL 알고리즘 종합 가이드

1. 비변경 시퀀스 알고리즘 이 알고리즘들은 대상 컨테이너의 요소들을 수정하지 않고 동작합니다. 1.1 검색 관련 함수 find(start, end, target): 특정 값과 일치하는 첫 번째 요소를 찾습니다. find_if(start, end, condition): 조건을 만족하는 첫 번째 요소를 탐색합니다. find_end(start, end, pattern_start, pattern_end): 하위 시퀀스가 마지막으로 나타나는 위치 ...

5월 30일 17:57에 게시됨

C++로 구현하는 LRU 캐시 시뮬레이션

캐시 시뮬레이션 문제는 메모리 계층 구조의 핵심 개념을 검증하는 대표적인 알고리즘 문제입니다. 이 글에서는 C++를 활용해 집합-연관 매핑 방식의 캐시를 모델링하고, LRU(Least Recently Used) 교체 정책을 적용하는 방법을 살펴봅니다. 문제 개요 주어진 메모리 주소 스트림에 대해 캐시 히트/미스를 판정하고, 미스 발생 시 LRU 알고리즘으로 블록을 교체해야 합니 ...

5월 29일 10:03에 게시됨

C++ 표준 템플릿 라이브러리(STL) 핵심 알고리즘 가이드

1. 비수정 시퀀스 알고리즘 컨테이너의 데이터를 변경하지 않고 탐색이나 비교 작업을 수행하는 알고리즘입니다. find, find_if, find_end find: 특정 값과 일치하는 첫 번째 요소를 찾습니다. find_if: 조건(서술자)을 만족하는 첫 번째 요소를 찾습니다. find_end: 대상 범위 내에서 특정 서브 시퀀스가 마지막으로 나타나는 위치를 반환합니다. vector&l ...

5월 26일 23:29에 게시됨

C++ 표준 라이브러리 알고리즘 완전 정리

비수정형 시퀀스 알고리즘 이들 알고리즘은 컨테이너의 요소를 변경하지 않고 탐색 또는 검사를 수행합니다. 요소 탐색: find 계열 함수 find(시작, 끝, 값): 지정된 값과 일치하는 첫 번째 요소의 반복자를 반환. 못 찾으면 end(). find_if(시작, 끝, 조건): 조건을 만족하는 첫 번째 요소를 찾음. find_end(시작1, 끝1, 시작2, 끝2): 두 번째 범위의 시퀀스가 첫 ...

5월 26일 16:42에 게시됨

C++ vector 컨테이너 핵심 활용법

C++ 표준 라이브러리의 vector는 동적 배열을 구현한 시퀀스 컨테이너로, 크기가 자동으로 조절되는 가변 길이 배열입니다. 연속된 메모리 공간에 요소를 저장하므로 인덱스 기반 접근이 상수 시간에 가능하며, 필요에 따라 자동으로 저장 공간을 확장합니다. 기본 사용 준비 사용 전 해당 헤더를 포함해야 합니다. #include <vector> 다양한 생성 및 초기화 방 ...

5월 24일 18:09에 게시됨

C++ multiset 활용 가이드: 중복 허용 정렬 컨테이너

multiset 기본 개념 multiset은 C++ 표준 라이브러리의 연관 컨테이너로, 중복된 값을 허용하는 정렬된 집합을 제공합니다. 내부적으로 레드-블랙 트리로 구현되어 있어 삽입, 삭제, 검색 연산이 O(log n) 시간 복잡도를 보장합니다. 선언 및 정렬 방식 // 오름차순 정렬 (기본값) multiset<int> ms_asc; // 동일: multiset<int, less<int>> ms_asc; / ...

5월 24일 11:53에 게시됨

STL 알고리즘을 활용한 컨테이너 조작 기법

비변형 시퀀스 알고리즘 이러한 알고리즘은 원본 컨테이너의 내용을 변경하지 않으며, 요소를 검색하거나 조건을 평가하는 데 사용됩니다. 요소 탐색: find 계열 함수 find(시작, 끝, 값): 지정된 값과 일치하는 첫 번째 요소의 반복자를 반환합니다. 못 찾으면 end()를 반환. find_if(시작, 끝, 조건함수): 조건을 만족하는 첫 번째 요소를 찾습니다. find_end(시작, 끝 ...

5월 22일 11:00에 게시됨