C++ 스택 및 큐 컨테이너 어댑터 분석과 커스텀 구현

컨테이너 어댑터의 개념 C++ 표준 템플릿 라이브러리 (STL) 에서 스택 (stack) 과 큐 (queue) 는 독립적인 데이터 구조라기보다는 기존 컨테이너를 래핑하여 특정 접근 규칙을 강제하는 컨테이너 어댑터로 분류됩니다. 이들은 내부적으로 다른 컨테이너를 저장소로 활용하며, 사용자에게는 제한된 인터페이스만을 노출합니다. 스택 (Stack) 어댑터 동작 원리 및 정의 스택 ...

8월 5일 19:11에 게시됨

C++ 컨테이너 어댑터: stack, queue 및 priority_queue의 이해와 구현

1. stack의 특징과 활용 C++ STL의 stack은 LIFO(Last-In-First-Out, 후입선출) 원칙을 따르는 컨테이너 어댑터입니다. 데이터의 삽입과 삭제가 한쪽 끝(Top)에서만 이루어지는 구조를 가집니다. 1.1 stack의 주요 인터페이스 함수 설명 push(val) 스택의 맨 위에 데이터를 추가 pop() 스택의 ...

8월 5일 00:44에 게시됨

C++ STL: map과 multimap 심층 분석

map과 multimap 개요 map과 multimap은 C++ Standard Template Library (STL)에서 제공하는 연관 컨테이너로, std::pair 객체를 사용하여 키(key)와 값(value)의 쌍으로 데이터를 저장합니다. 이 두 컨테이너는 내부적으로 레드-블랙 트리(Red-Black Tree) 자료구조를 기반으로 구현되어, 저장된 요소들이 항상 키를 기준으로 정렬된 상태를 유지합니다. 이러한 정렬 특 ...

7월 31일 07:58에 게시됨

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): 하위 시퀀스가 마지막 ...

7월 28일 01:09에 게시됨

C++ STL 알고리즘 핵심 정리 및 활용 가이드

1. 시퀀스 비변경 알고리즘 (Non-modifying Sequence Algorithms) 이 알고리즘들은 컨테이너의 원소를 읽기만 할 뿐, 메모리 상의 원소 값을 직접 수정하지 않습니다. 1.1 원소 탐색 (find, find_if, find_end) find: 특정 값과 일치하는 첫 번째 원소의 반복자를 반환합니다. 없으면 end를 반환합니다. find_if: 주어진 조건자(predicate)를 만족하는 첫 번째 ...

7월 24일 07:36에 게시됨

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): 부분 시퀀스가 마지막으로出現하 ...

7월 23일 09:17에 게시됨

C++ 핵심 개념 정리

1. 객체지향 3대 특성 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism) 2. 접근 지정자 private, protected, public 3. 생성자와 소멸자 클래스에는 기본 생성자, 복사 생성자, 대입 연산자, 소멸자가 포함된다. class Data { private: int x; int y; int z; public: Data(int a, int b, int c) : x(a), y(b), z(c) { // 초기 ...

7월 21일 06:07에 게시됨

C++ 기반 GUI 시뮬레이션과 컨테이너 클래스 구현

작업 1: GUI 요소의 조합 설계 이 작업은 C++에서 버튼과 창을 모델링하여 간단한 GUI를 시뮬레이션합니다. Button 클래스는 레이블을 가지고 클릭 시 메시지를 출력하며, Window 클래스는 여러 개의 버튼을 포함하는 조합 관계를 가집니다. 핵심 코드 #include <iostream> #include <string> #include <vector> class Button { public: explicit ...

7월 21일 05:42에 게시됨

C++ STL 컨테이너 어댑터: 스택, 큐, 우선순위 큐의 이해와 구현

1. 컨테이너 어댑터(Container Adapter)의 개념 C++ STL에서 스택(Stack), 큐(Queue), 우선순위 큐(Priority Queue)는 독립적인 자료구조라기보다 기존 컨테이너의 인터페이스를 제한하거나 변형하여 특정 목적에 맞게 재설계한 컨테이너 어댑터로 분류됩니다. 이들은 내부적으로 데이터를 저장하기 위해 vector, list, deque와 같은 표준 시퀀스 컨테이너를 사용합니다. ...

7월 20일 19:32에 게시됨

C++ 템플릿 기초 완전 정복: 제네릭 프로그래밍으로 코드 중복 탈피하기

왜 템플릿인가? 반복 코드에서 벗어나는 첫걸음 정수, 실수, 문자 등 다양한 타입에 대해 동일한 로직을 구현할 때마다 함수를 반복해서 작성해본 경험이 있다면, C++의 템플릿은 그 해결책이 될 수 있다. 예를 들어 두 값을 교환하는 Swap 함수를 각 타입별로 따로 작성하면 다음과 같다: void Swap(int& a, int& b) { int temp = a; a = b; b = tem ...

7월 16일 01:49에 게시됨