전체 글 33

[C/C++] std::vector의 capacity에 대해서

이번에는 std::vector 의 capacity 를 아라보자.( 요약은 맨 아래에 )vector 에 원소를 추가하다 보면 capacity 가 달라지기도 하고, 원소를 지웠는데도 그대로 남아 있기도 한다.문제는 capacity 를 변경하게 되는 순간 메모리를 점유해야 한다.capacity 가 언제 바뀌는지 알면 reserve 써야 하는지, 메모리 최적화를 해야 하는지 판단하기 편하다.C++17의 기본 할당자를 사용하는 std::vector 를 기준으로 살펴보자.- capacity -std::vector::capacity()는 재할당 없이 담을 수 있는 원소의 총개수를 알려준다.( 한마디로 빈방을 포함한 총세대수다. )공간을 늘리는 함수가 아니라, 현재 확보한 용량을 확인하는 함수다.( 단위는 바이트가 아..

C,C++ 2026.09.11

[C/C++] std::vector의 reserve, resize 차이에 대해

std::vector 초기화에 대해 작성해 본다.( 요약은 맨 아래에 )vector에 값을 넣기 전에 공간부터 확보하고 싶을 때가 있다.(push 나 emplace 로 밀어 넣지 않고, index 로 접근하고 싶을 때)이때 reserve와 resize를 같은 용도로 생각하면 인덱스로 값을 넣는 부분에서 헷갈리기 쉽다.둘 다 크기와 관련된 함수이지만 바꾸는 대상이 다르다.C++17을 기준으로 살펴보자.size는 현재 원소 개수, capacity는 재할당 없이 담을 수 있는 원소의 총 개수다.( capacity는 바이트가 아니라 원소 개수로 센다. )- reserve -먼저 reserve를 사용하면 아래와 같다.std::vector values;values.reserve(3);// values.size() ..

C,C++ 2026.09.11

[BOJ] 9965 - 돌 게임

https://www.acmicpc.net/problem/9965문제돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.입력첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1000)출력상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.전체 코드더보기#include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); co..

백준 알고리즘 2025.05.22

추상 클래스(Abstract Class)와 인터페이스 클래스(Interface Class)

추상 클래스(Abstract Class)와 인터페이스 클래스(Interface Class)에 대한 기초적 고찰초록(Abstract)본 논문은 객체지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 개념 중 하나인 추상 클래스(Abstract Class) 와 인터페이스 클래스(Interface Class) 의 개념, 구조, 사용 목적을 설명하고 이 둘의 차이를 비교한다. 개발자가 추상화(abstraction)와 다형성(polymorphism)의 기초를 이해할 수 있도록 실생활의 유사 개념과 C++ 기반의 예시 코드를 통해 설명한다. 또한 다중 상속, 기능 계약, 코드 재사용성 등의 개념을 명확하게 구분하여 실무 적용을 돕는다.1. 서론(Introduction)복잡한 소프트웨..

AI 2025.05.15

C++ 힙, 해시, 트리 기반의 컨테이너 비교 분석

시간복잡도 관점에서 본 C++ 컨테이너의 비교 분석 : 해시, 힙, 트리 기반 구조를 중심으로초록 (Abstract)본 논문은 C++ 표준 라이브러리에서 제공하는 비선형 컨테이너 중 힙(std::priority_queue), 해시(std::unordered_map, std::unordered_set), 트리(std::map, std::set) 기반 컨테이너를 시간복잡도 관점에서 비교 분석한다. 각 컨테이너가 제공하는 연산(삽입, 삭제, 탐색, 정렬)의 이론적 복잡도를 구조적으로 분석하고, 컨테이너 내부 구현에 따른 차이를 정리함으로써, 성능 최적화 측면에서의 선택 기준을 제시한다. 실측 성능이나 구현체 간 차이는 배제하고, 알고리즘 복잡도와 구조 기반의 이론 분석에 초점을 둔다.1. 서론 (Introdu..

AI 2025.05.12

[Gdiplus::Graphics] 최적화 관련 팁 정리

사내 신규 개발항목에서 성능이슈가 발생했다.그래서 끌려갔다 ( 거 그만좀 갖다 써... ) 주요 내용은 Gdiplus::Graphics 항목으로 DrawImage 대상이 늘어나면 성능하락이 심각하다는 것이다.이에 관련해 찾아본 내용을 간단하게 정리해둔다.  Gdiplus::CompositingMode 설정: 투명도(alpha)가 없는 불투명한 비트맵(특히 32비트 비트맵의 경우)을 사용하는 경우, DrawImage() 호출 전에 Graphics.CompositingMode를 CompositingMode.SourceCopy로 설정하세요. 그래야 픽셀 단위의 불필요한 혼합 계산을 건너뛸 수 있습니다. 설정 후에는 꼭 원래 값으로 되돌려주세요. 그렇지 않으면 일반적인 드로잉 프리미티브가 보기 흉하게 보일 수 ..

MFC 2025.02.18

Unreal Engine 5에서 Shipping 빌드 및 패키징 에러에 대해

이번에도 요약은 맨 아래에 1. Shipping 빌드 및 패키징 에러 현상 및 원인소스코드 기반의 프로젝트를 Unreal Engine 5(UE5)로 개발하고 나서 배포하려면 'Shipping' 으로 패키징을 해야  한다.이때, Unreal의 에디터 기능을 소스코드로 개발하고 Shipping으로 빌드 하거나 패키징을 할 때 아래와 같은 오류를 직면하기도 한다. - UnrealEd 모듈을 사용한 경우를 예시로 작성되었습니다 - 더보기// Shipping_Test.Build.cspublic class Shipping_Test : ModuleRules{ public Shipping_Test(ReadOnlyTargetRules Target) : base(Target) { PCHUsage =..

Unreal 2024.11.01

[C++] 'enum class' 란?

요약은 맨아래 C++ 11 버전에서 새로 도입된 열거형이다.(참고로 열거형이란 '상수 집합을 정의하는 강력한 도구' 라고 한다. 1,2,3... 등) 이전에는 enum 키워드를 사용하여 열거형(상수 집합)을 쓸 뿐이였지만 class 형태로 고도화 된 것이다. 가장 큰 차이점은 enum 의 경우 아래와 같은 사용이 가능하나enum Number { One = 1, Two, Three,};Number myNumber = Number::Three; // myNumber == 3std::cout enum class 의 경우 불가능하다enum class Number { One = 1, Two, Three,};Number myNumber = Number::Three; // myNu..

C,C++ 2024.06.01

Roll, Pitch, Yaw 란? (오일러 축)

언제나 처럼 요약은 맨 아래 ㅎ Pitch, Roll, Yaw 라고 불리는 이 축들은 오일러 축에서 각각 수평, 종, 횡 방향의 회전을 뜻한다 정면을 기준으로 하기와 같은 축을 중심으로 설정한다.Roll : X축 (오른쪽 진행 방향)Pitch : Y축 (뒤쪽 진행 방향)Yaw : Z축 (위쪽 진행 방향)1. Roll (수평 방향 축 회전)Roll은 X축을 기준으로 하는 회전마치 고개를 끄덕이는 것과 같은 방향으로 회전한다.2. Pitch (정면 방향 축 회전)Pitch는 Y축을 기준으로 하는 회전 축마치 고개를 갸웃이는 것과 같은 방향으로 회전한다.3. Yaw (종 방향 회전)Yaw은 Z축을 기준으로 하는 회전 축마치 고개를 도리짓 하는 것과 같은 방향으로 회전한다. - 요약 - Roll : 끄덕끄덕 -..

Physics 2024.04.01

[BOJ] 백준 22490 : 선형 연립 방정식

https://www.acmicpc.net/problem/22940 22940번: 선형 연립 방정식하나 이상의 미지수에 대해 최고차항의 차수가 1을 넘지 않는 방정식을 선형 방정식이라 한다. 족, 다음과 같은 식을 의미한다. A1x1 + A2x2 + ... + Anxn = B 선형 연립 방정식이란 유한개의 선형 방www.acmicpc.net전체 코드더보기#include using namespace std;void q_sort(double **x, int col, int start, int end){ if (start >= end) return; double piv = abs(x[start][col]); int i = start + 1; int j = end; whi..

백준 알고리즘 2023.10.10
반응형