C++ 템플릿 기초 이해하기

소스 코드 컴파일 환경: Windows 10 x86 디스어셈블리 도구: IDA Pro 템플릿을 처음 접한 것은 C#의 제네릭 프로그래밍을 통해서였습니다. 표면적으로는 특정 제약 조건 내에서 다양한 인자 타입에 대해 메서드를 재사용할 수 있게 해주어 코드 중복을 줄여준다는 이해를 했습니다. 이후 C++과 어셈블리를 접하면서 템플릿의 원리에 대한 의문이 생겼습니다. 왜 템플릿의 ...

7월 1일 05:42에 게시됨

VS2022 + Qt 6.7.2 타이머 사용법 두 가지

1. QObject 타이머 이벤트 활용 QObject를 상속받는 모든 클래스는 timerEvent(QTimerEvent *event) 가상 함수를 제공합니다. startTimer()로 간격과 타이머를 시작하고, 이 함수를 재정의하여 작업을 처리합니다. 여러 타이머는 ID로 구분하며, killTimer()로 종료합니다. // 헤더에서 선언 protected: void timerEvent(QTimerEvent *event) override; int m_time ...

7월 1일 00:29에 게시됨

C++ chrono 라이브러리를 활용한 시간 간격 및 시점 관리

비율 표현을 위한 ratio C++11에서 도입된 std::ratio는 컴파일 시점에 유리수(분수)를 표현하기 위한 템플릿 클래스입니다. 분자(N)와 분모(D)를 비타입 템플릿 매개변수로 받아 비율을 정의합니다. template<std::intmax_t N, std::intmax_t D = 1> class ratio; 표준 라이브러리는 자주 사용되는 SI 접두어를 기반으로 한 비율 타입을 미리 정의해 두고 있습니다 ...

6월 30일 22:32에 게시됨

C++에서의 포인터 이해

C++에서 포인터는 메모리 주소를 저장하는 변수로, 다른 변수나 객체에 간접적으로 접근하고 조작할 수 있습니다. 1. 포인터의 개념 포인터는 특정 데이터의 메모리 주소를 저장하는 변수입니다. 자신의 메모리 주소도 존재하지만, 저장된 값은 다른 변수의 주소입니다. 2. 포인터 선언 문법 타입 *변수명; // 예: int *ptr; double *p; - 별표(*)의 위치는 ...

6월 30일 04:31에 게시됨

pugixml을 활용한 XML 데이터 처리 기법

XML 처리 라이브러리 pugixml 소개 pugixml은 경량이며 고성능의 C++ 기반 XML 파서로, 구조화된 데이터를 효율적으로 읽고 쓸 수 있도록 설계되었습니다. 주요 특징은 다음과 같습니다: DOM 유사 인터페이스 제공 — 트리 탐색 및 수정에 용이 빠른 비검증 파싱 속도 — 대용량 파일 처리에 적합 XPath 1.0 지원 — 복잡한 노드 접근 가능 유니코드 완전 지원 — 인 ...

6월 30일 04:03에 게시됨

NOIP 2023 알고리즘 문제 풀이

문제 1: 간단한 문자열 처리 첫 번째 문제는 매우 straightforward합니다. 각 행의 문자를 추출하여 정렬한 후 최소 문자열을 만들고, 역순으로 배치하여 최대 문자열을 만들면 됩니다. 코드 확인하기 #include <bits/stdc++.h> using namespace std; using ll = long long; template<typename T> void processRange(T* start, T* end, function<void(T*)& ...

6월 29일 21:06에 게시됨

C++에서의 배열과 포인터

C++ 책이나 튜토리얼 대부분은 배열과 포인터를 함께 다룹니다. 그 이유는 무엇이며, 둘 사이에는 어떤 연관성이 있을까요? C++에서 배열과 포인터는 밀접하게 연결되어 있으며, 주요 관계는 다음과 같습니다. 1. 배열 이름은 포인터다 대부분의 상황에서 배열 이름은 배열의 첫 번째 요소를 가리키는 포인터로 암시적으로 변환됩니다. 예를 들어, int arr[5];라는 배열 ...

6월 29일 18:28에 게시됨

Qt 레이아웃 시스템 완벽 가이드: WPF 개발자를 위한 핵심 비교

Qt는 WPF 및 WinForms 개발자에게 매우 흥미로운 선택지입니다. 이 글에서는 Qt 레이아웃 시스템의 핵심 개념을 다루며, WPF 경험이 있는 개발자들이 어떻게 Qt로 빠르게 전환할 수 있는지에 초점을 맞춥니다. Qt의 핵심 아키텍처 Qt는 크로스 플랫폼 UI 프레임워크로 C++를 기반으로 하며, 강력한 레이아웃 시스템과 논리적 픽셀 단위를 제공합니다. 기본적으로 DPI 인식 ...

6월 29일 02:33에 게시됨

메모리 주소 계산의 원리와 활용

메모리 주소의 기본 개념 메모리 주소는 컴퓨터 시스템에서 각 저장 단위를 식별하는 고유한 값입니다. 현대 컴퓨터 아키텍처에서는 메모리를 선형 주소 공간으로 구성하며, 각 주소는 일반적으로 1바이트 크기의 저장 위치를 나타냅니다. 프로그램 실행 중에는 이러한 주소를 통해 데이터에 접근하고 수정 작업을 수행합니다. 포인터를 통한 주소 조작 C/C++ 언어에서 포 ...

6월 28일 00:09에 게시됨

C++에서의 참조 특성 및 활용

참조의 기본 개념 C++에서는 참조(reference)를 통해 변수에 별칭(alias)을 부여할 수 있습니다. 다음 예시를 살펴보겠습니다. int main() { int x; int &y = x; int number; int &alias = number; } 위 코드에서 y는 x의 별칭이며, alias는 number의 별칭입니다. 따라서 y와 alias를 통해 해당 변수들의 값을 읽거나 수정할 수 있습니다. 참조 ...

6월 28일 00:06에 게시됨