본문 바로가기

프로그래밍 공부11

[자료 구조] 비선형(Non-Linear) 자료 구조 (1) 그래프(Graph), 트리(Tree) 개요 포스트를 읽으실 때 참고하실 점 해당 카테고리의 포스트들은 C/C++ 언어를 기준으로 작성되어 다른 언어에는 적용되지 않는 내용이 일부 포함될 수 있습니다. 또한, 글의 배치나 띄어쓰기는 PC 버전 전체 화면 크기를 기준으로 작성됩니다. 틀린 부분이 있는 경우, 댓글이나 이메일로 연락주시면 내용을 정정하도록 하겠습니다. 비선형 자료 구조(non-linear data structures) 비선형(non-linear) 자료 구조란, 자료 사이의 전후 관계가 1:1이 아닌 자료 구조이다. 비선형 자료 구조는 트리(tree)와 그래프(graph)로 분류할 수 있다. 그래프(graph) 정점(vertex)과 각 정점을 연결하는 간선(edge)로 구성되는 자료 구조이다. 각각의 간선은 가중치(weight)를 가질 .. 2023. 11. 7.
[C++ 기초] STL priority_queue 템플릿 클래스 STL priority_queue 템플릿 클래스 std::priority_queue 클래스는 헤더 내에 포함된 컨테이너로, 비선형 자료 구조 중의 하나인 우선순위 큐(priority queue) 역할을 하는 컨테이너이다. 우선순위 큐는 종종 알고리즘 문제를 해결하기 위해 쓰이는데 힙(heap) 트리를 직접 만들어 구현할 수도 있으나, 편의상 매번 해당 자료 구조들을 직접 구현하는 것이 번거로워 STL에서 제공하는 템플릿 클래스 사용법을 정리해놓으려고 한다. // std::priority_queue 클래스의 템플릿 매개변수 template _Ty : 일반화 된 자료형. _Container : 임의 접근.. 2023. 5. 30.
[순서론(Order theory)] Strict Weak Ordering의 개념 포스트를 읽으실 때 참고하실 점프로그래밍에 대한 깊은 이해를 쌓고자, 개인적으로 필요한 수학적 지식들을 간략하게만 기록하기 위한 포스팅입니다. 단순한 수준의 프로그래밍을 하기 위해서는 필요하지 않은 내용이 다수 포함될 수 있습니다.만약 포스팅에 잘못된 내용이 있다면 댓글이나 이메일을 통해 알려주시면 수정하겠습니다. 감사합니다.  Strict weak ordering집합 $S$에 대하여 다음의 4 가지 조건을 만족하는 동차 관계(homogeneous relation) $strict weak ordering이라고 한다. 비반사성(irreflexibility): 집합 $S$에 속하는 모든 원소에 대해 $a 추이성(transitivity): 집합 $S$에 속하는 원소 $x, y, z$에 대해, $x 비대칭성(a.. 2023. 5. 30.
[C++ 기초] 부동소수점 표기법(Floating-Point Arithmetic) 부동소수점 표기법(floating-point arithmetic) 부동소수점 표기법이란, 실수(real number)를 고정 정밀도(precision)를 가지는 유효숫자(significand)와 어떠한 밑(base)의 거듭제곱과 곱한 형태로 근사적으로 나타내는 표기법이다. 이때 밑은 일반적으로 진법(numeral system)에 따라 정한다. 고정소수점 표기법: \(12.345\) 부동소수점 표기법: \(12345 \times 10^{-3}\), \(1.2345 \times 10^{1}\) 등 여러 가지로 표현 가능 위의 예시에서와 같이 고정소수점 표기법으로 12.345로 나타내어지는 실수는 부동소수점 방식으로 표현할 때 이론상 무수히 많은 경우의 수로 나타내어질 수 있다. 이처럼 같은 수여도 지수의 값.. 2023. 5. 23.
[C++ 기초] 표준 입출력 스트림(Stream)의 동기화 및 입출력 속도의 최적화 표준 입출력 스트림, 스트림 객체 표준 입출력 스트림이란, 컴퓨터 프로그램과 입출력 장치(키보드나 마우스 / 모니터 등) 사이에 입출력 데이터를 바이트의 흐름의 형태로 전송하기 위해 미리 연결되어 있는 통로이다. C와 C++에는 이러한 입출력 스트림과, 해당 스트림을 관리하기 위한 스트림 객체가 존재한다. C: stdin(입력), stdout(출력), stderr(에러) C++: cin(입력), cout(출력), cerr(에러), clog(로그) (+ wcin, wcout, wcerr, wclog) 기본적으로 C와 C++의 표준 입출력 스트림 사이에는 각각 입출력 연산 후 동기화를 수행하도록 설정되어있고, C의 표준 입출력 스트림이 사용하는 버퍼(buffer)를 C++의 표준 입출력 스트림들도 같이 사용.. 2023. 5. 13.
[Unreal Engine 일반] 언리얼 프로퍼티(Property) 시스템(리플렉션, reflection) 리플렉션(reflection) 리플렉션은 실행시간(runtime)에 어떠한 객체가 자기 자신을 조사하는 기능으로, 표준 C++에서 객체의 다형 정보(dynamic_cast 연산자), 객체의 데이터형 식별(typeid 연산자), typeinfo 클래스 정보로써 나타나는 실행시간 데이터형 정보(runtime type information, RTTI)보다 더 포괄적인 개념으로, 런타임에서 객체의 정보 및 구조를 관리하거나 수정할 수 있도록 하는 기능들까지 포함하는 개념이다. 게임(엔진) 프로그래밍에 있어서 리플렉션 기능은 왜 필요할까? 리플렉션 기능이 게임 프로그래밍(특히 엔진 프로그래밍)에서 필수적인 이유는, 컴파일 타임에 만들어지는 객체의 정보 이외에도 런타임에서 객체의 정보들이 새로 추가되거나 수정될 수.. 2023. 5. 11.