본문 바로가기

분류 전체보기

(57)
함수의 호출 함수 호출.스택 프레임 구조함수 호출 과정에서 할당되는 메모리 블록을 가리켜 스택 프레임이라 합니다.  sp 레지스터스택에 데이터를 쌓거나 반환하기 위해 어느 위치까지 데이터를 저장했는지 기억해야 합니다.이를 위해서 CPU 내에 sp라는(Stack Pointer) 레지스터가 존재합니다.변수 선언시 sp가 가리키는 위치에 할당하기 때문에 sp 위치를 아래로 이동 시키는 것 만으로도 이전에 선언된 변수를 반환 가능합니다. (변수 할당 시 이전에 저장된 값들을 덮어씁니다.)시작은 sp 레지스터가 0번지.변수나 함수 호출을 할 때 마다 sp 레지스터가 해당 주소 번지에 값을 넣고 변수나 함수의 스택 프레임 크기만큼 이동합니다. (다음에 변수나 함수에 대한 주소 값을 넣어주기 위해서) sp 레지스터의 문제점스택에..
큐란?가장 처음에 들어간 데이터가 처음으로 꺼내지는 구조를 가진 자료구조 입니다. (FIFO)  큐의 ADT큐란 자료구조를 구현하기 전에 해당 자료구조의 ADT를 정의할 필요가 있습니다.1. First in First Out(FIFO) : 처음에 들어간 값이 첫 번째로 나오는 구조2. 탐색, 삽입, 삭제를 구현할 것.3. 큐의 전방, 후방을 나타내는 변수를 선언할 것.  큐의 ADT 선언큐의 ADT를 참고하여 클래스로 선언 해보겠습니다. #include "pch.h"#include using namespace std;template struct Node{ T value; Node* prevNode; Node* nextNode;};template class CustomQueue{public: Custo..
스택 스택이란?가장 마지막에 들어간 데이터가 처음으로 꺼내지는 구조를 가진 자료구조 입니다. (LIFO)가장 처음에 들어간 데이터가 가장 마지막에 꺼내지는 구조를 가진 자료구조입니다. (FILO)  스택의 ADT스택이란 자료구조를 구현하기 전에 해당 자료구조의 ADT를 정의할 필요가 있습니다.1. Last in First Out(LIFO) : 마지막에 들어간 값이 첫 번째로 나오는 구조2. 탐색, 삽입, 삭제를 구현할 것.3. stack 최상단 데이터 값을 반환하는 함수를 구현할 것.  스택 ADT 선언스택의 ADT를 참고하여 클래스로 선언 해보겠습니다.  template class CustomStack{public: CustomStack() : list(new T[10]) , pointer(-1) , ..
리스트의 종류 (링크드, 더블 링크드, 환형 링크드) 1. 링크드 리스트리스트의 자료구조를 구현 방법 중 하나입니다.일반적으로 시작 노드를 head 노드, 끝 노드를 tail 노드라고 정의합니다.  링크드 리스트의 ADT링크드 리스트의 ADT를 정의하기 위해 공통 요소와 기능을 살펴보겠습니다.요소(DATA): 개별 노드(Node), head 노드에 대한 포인터기능(FUNCTION):노드를 추가하는 연산노드를 삽입하는 연산노드를 제거하는 연산노드를 반환하는 연산 링크드 리스트의 ADT 선언링크드 리스트의 ADT를 보고 선언만 해보겠습니다.typedef int nodeData;typedef struct Node{ Node* next; NodeData nodeData; }*PNODE, NODEclass LinkedList{public: List(); ..
리스트 리스트란?리스트(List)는 목록 형태로 이루어진 데이터 형식입니다. 리스트를 구성하는 개별 요소를 노드(Node)라고 부르며, 리스트의 첫 번째 노드를 헤드(Head), 마지막 노드를 테일(Tail)이라고 합니다.  ADT 정의자료구조를 구현하기 전에 해당 자료구조의 ADT(Abstract Data Type)를 정의할 필요가 있습니다. ADT라는 용어가 처음에는 다소 모호하게 느껴질 수 있지만, 이는 추상화된 자료 구조를 의미합니다. 추상화는 객체의 공통적인 요소와 기능을 정의하는 것을 의미하며, 프로그래밍에서는 요소를 데이터(Data), 기능을 함수(Function)로 구현합니다. ADT는 자료구조를 객체라는 관점으로 바라보면, 자료구조의 공통적인 요소와 기능을 정의하는것으로 볼 수 있습니다.  리스..
C++ 템플릿 1. 템플릿사용자가 원하는 타입을 지정하면 해당 타입의 형태의 물건이 나옵니다.데이터 형식이나 함수의 일반적인 모양을 정의하는데 사용하는데 템플릿은 코드 재사용성을 증가시킵니다.일반적으로 컴파일 타임에 타입 안정성을 보장합니다. ⇒ 컴파일 타임에 수행됩니다. 2. 함수 템플릿#include #include template T max(T& a, T& b) { return a > b ? a : b;}int main() { int a = 1, b = 2; std::cout 템플릿 함수도 마찬가지로 함수의 일반적인 버전을 제공하며, 호출 시 컴파일러가 타입을 결정합니다. 함수의 일반화된 선언을 의미합니다.  예시 Swaptemplate void Swap(T& a, T& b){ T temp; temp = a..
C++ 동적 할당 1. 동적 할당필요성동적 할당은 프로그램 실행 중 메모리를 동적으로 할당하고 해제하는 데 사용됩니다. 정적 할당(예시 : 배열)은 컴파일 시점에 크기를 결정하고, 프로그램이 실행되는 동안 크기를 변경하기 어렵습니다.유연한 크기의 자료구조 필요성프로그램 실행 중에 데이터 크기가 동적으로 변할 때, 동적 할당은 필수적입니다.자원 효율성정확한 메모리 양을 미리 예측하기 어려운 경우, 동적 할당은 자원을 효율적으로 사용할 수 있게 해줍니다. 메모리 영역동적 할당의 경우 메모리 영역에서 Heap 영역에 할당됩니다.프로그램 실행 중 (Runtime) 메모리를 동적으로 할당하고 해제하는데 사용되는 영역입니다. 종류C++에서 동적 할당은 new 와 delete 키워드를 사용하는 방식, 스마트 포인터를 사용하는 방식으로..
C++ 자료구조 구현 이중 원형 연결 리스트 구현에 앞서서..리스트 연결 최소 단위는 Node입니다.연결 리스트의 마지막 노드가 가장 첫 번째 head 노드를 가리켜야 합니다.조회, 삽입, 삭제 과정이 존재합니다. Node 구현template class Node{ // 1. Node는 prev, data, next 로 이루어져 있습니다.public: Node(Node* prev, T data, Node* next) : prev(prev) , data(data) , next(next) { } Node(T data) : prev(nullptr) , data(data) , next(nullptr) { } Node() : prev(nullptr) , data(0) , next(nullptr) { }public: Node* prev; int..
C++ 자료구조 구현 Red-Black Tree ColorRedBlackRed는 동시에 2개가 나올 수 없다.  NODE_TYPEPARENT : 부모 노드LCHILD : 왼쪽 자식 노드RCHILD : 오른쪽 자식 노드  RBPair트리에 들어갈 자료형int key, int value 타입  Node트리에 들어갈 노드#pragma once#include/*1. 모든 노드는 빨간색 혹은 검은색이다.2. 루트 노드는 검은색이다.3. 모든 리프 노드(NIL)들은 검은색이다. (NIL : null leaf, 자료를 갖지 않고 트리의 끝을 나타내는 노드)4. 빨간색 노드의 자식은 검은색이다.   == No Double Red(빨간색 노드가 연속으로 나올 수 없다)5. 모든 리프 노드에서 Black Depth는 같다.   == 리프노드에서 루트 노드까지 가는 경로..
UE - 저격 총 조준 모드 구현하기 구현 순서스나이퍼 애셋 가져오기총 교체하기스나이퍼 UMG 제작하기스나이퍼 조준 모드 전환하기 1. 애셋 가져오기. lifeunreal5/자료실/3장/SniperGun .zip at main · araxrlab/lifeunreal5인생 언리얼 5 프로젝트 교과서 . Contribute to araxrlab/lifeunreal5 development by creating an account on GitHub.github.com  Import All 선택 Texture Sample 생성diffuse Texture   normal Texture  Texture Material에 연결  2. 총 교체하기새롭게 가져온 스나이퍼건을 플레이어가 사용할 수 있도록 추가스나이퍼건 스태틱 메시 추가// 스나이퍼건 스태틱메시..