전체 글 57

Qt란?

Qt는 C++ 기반의 크로스플랫폼 애플리케이션 프레임워크로, 하나의 코드로 Windows, macOS, Linux, 모바일까지 다양한 환경에서 동작하는 프로그램을 만들 수 있게 해준다.단순한 UI 라이브러리가 아니라, 애플리케이션의 구조 자체를 제공하는 프레임워크다. Qt의 동작 방식프로그램의 기본 흐름을 Qt가 관리한다개발자는 그 구조 안에서 기능만 구현한다QApplication app(argc, argv);QWidget window;window.show();return app.exec(); // 이벤트 루프 시작 app.exec()가 실행되면 이벤트 루프가 시작되고, 이후에는 Qt가 사용자 입력을 처리하며 프로그램 흐름을 제어한다. Qt의 장점 크로스플랫폼을 지원하여 한 번 작성한 코드로 여러 운..

C++ 2026.05.06

정적/동적 라이브러리 비교

C++ 프로젝트를 규모 있게 만들기 시작하면 정적 라이브러리(static library)와 동적 라이브러리(dynamic library) 개념을 접하게 된다.단순히 파일 포맷 차이처럼 보이지만, 빌드 방식 & 링크 과정 & 실행 구조 & 배포 전략까지 영향을 준다..이 글에서는 두 개념의 차이, 장단점, 그리고 성능 관점의 차이를 정리한다. 정적 라이브러리정적 라이브러리는 컴파일 시점에 실행 파일에 포함되는 라이브러리다.보통 Windows에서는 .lib, Linux에서는 .a 형태로 존재한다. 동작 방식예를 들어 다음과 같은 수학 라이브러리를 만들었다고 가정한다.project/|── math/| |── math.h (여기에 add, mul 등 구현됨)| |── math.cpp|── main.cpp..

C++ 2026.04.26

두 컨테이너의 크기 일치를 보장하는 방법

C++에서 두 개의 컨테이너(ex: vector)를 함께 관리해야 하는 경우가 있다. -> push_back과 pop_back 연산의 호출 횟수가 항상 동일std::vector vec1;std::vector vec2;for (int i = 1; i 두 컨테이너의 크기 일치를 보장하는 방법으로는 매번 조건문으로 크기를 확인하는 방식이 있다. 하지만 이 검사를 누락하면 범위를 벗어난 접근이 발생해 런타임 오류로 이어질 수 있다. 이 방법은 런타임 오류를 막는 최소한의 안전장치지만 여전히 실수 가능성이 존재한다. 두 컨테이너가 반드시 동일한 크기를 유지해야 한다면 개별 컨테이너 두 개로 관리하지 말고 std::pair로 묶어서 관리하는 것이 더 안전하다. std::pair를 사용하면 두 값이 독립적으로 존재..

C++ 2025.09.22

[C++] 우선순위큐 - 최대힙, 최소힙

우선순위큐(priority queue)우선순위큐(default 최대 힙)는 삽입된 요소에 대해 우선순위가 높은 데이터를 먼저 가져오는 형식의 자료구조다. 우선순위큐는 주로 힙 자료구조를 기반으로 구현된다. 힙(heap)힙은 완전이진트리의 일종으로 우선순위큐를 위해 만들어진 자료구조다.최대값/최소값을 빠르게 찾아내도록 만들어졌다.최대힙에서는 최대값, 최소힙에서는 최소값을 O(1)의 시간복잡도로 빠르게 접근할 수 있다.삽입과 삭제 연산은 트리의 높이에 비례하기 때문에 O(log N)의 시간복잡도를 가진다.이진탐색트리에서는 중복된 값을 허용하지 않는 반면 힙 트리에서는 중복된 값을 허용한다.힙은 최대힙과 최소힙 형태로 나뉜다. 최대힙부모노드의 키 값이 자식노드의 키 값보다 크거나 같은 완전이진트리부모노드의 키..

구조체와 공용체의 차이

구조체와 공용체는 C와 C++에서 제공되는 사용자 정의 데이터 타입이다. 둘 다 여러 개의 멤버 변수를 가질 수 있지만, 메모리 할당 방식과 데이터 저장 방식에 차이가 있다. 메모리 할당 방식구조체는 각 멤버 변수가 별도의 메모리 공간을 차지하므로 구조체의 크기는 모든 멤버 변수가 차지하는 메모리 공간의 합과 같다.#include typedef struct student { int age; double weight; char gender;} Student;int main() { Student je; printf("%p %p %p\n", &je.age, &je.weight, &je.gender); // 0x16fdb7430 0x16fdb7438 0x16fdb7440 prin..

C++ 2024.10.13

[C++] 나눗셈에서 소수점 포함하기

C++에서 정수끼리의 나눗셈에서 소수점이 버려지고 정수 값만 리턴되는 현상이 나타난다.#include using namespace std;int main() { int dividend = 10; int divisor = 3; double result = dividend / divisor; cout  10 / 3의 결과를 10.3333... 으로 기대하지만 실제 출력은 3으로 나타난다. 소수점이 버려지는 이유는 C++의 데이터 타입과 관련이 있다. C++에서 데이터 타입은 정수형과 실수형으로 나뉘며, 각 타입은 서로 다른 방식으로 연산을 처리한다.정수형 데이터 타입: int, short, long, long long, ...실수형 데이터 타입: float, double, ...정수형 피연산자들끼리의 나눗셈..

C++ 2024.10.08