C++ TIL day 9
·
C++
1. 과제 풀이과제 깃허브 주소과제1 필수: https://github.com/GBL22M/SCC_CH2-1/blob/main/assignment/Essential.cpp과제1 도전: https://github.com/GBL22M/SCC_CH2-1/blob/main/assignment/Challenge.cpp과제2 필수: https://github.com/GBL22M/SCC_CH2-1/blob/main/assignment/Essential.cpp과제2 도전: https://github.com/GBL22M/SCC_CH2-1/blob/main/assignment/Challenge.cpp1번 과제를 하면서...도전과제에 있어서 sorting 알고리즘을 구현해야 하였기에, 무슨 알고리즘을 구현할까 하다가 Qui..
2차원 vector 선언 및 sort
·
알고리즘(코딩테스트)
1. std::vector1. 2차원 벡터 선언방식vector> vec;vector> vec(10);vector vec[10];첫번째 방식첫번째 방식은 가장 기본적인 방식으로 push_back() 연산을 통해서만 가능처음에 빈 vector에 값을 대입하는 경우에 [ ] 연산자를 통해 대입이 불가능하다. (vector out of range)예시 코드#include #include using namespace std;int main(){ vector> vec; vector temp1 = { 1,2,3,4,5,6,7,8,9,10 }; vector temp2 = { 1,1,1,1,1,1,1,1,1,1 }; //vec[0] = temp1; 불가능 vec.push_back(temp1); vec.push_back..
C++ TIL day 8
·
C++
1. STL 기초1. 기본 컨테이너 벡터기본생성 & 특정값으로 초기화아래 예시처럼 실행하면, row가 3이고 col이 4이며, 모든 값이 7로 대입된 2차원 벡터가 생성된다.vector> vec2d(3, vector(4, 7)); 맵TreeMap(균형잡힌이진트리) 자료구조로 이루어져 있다.Key 순서대로 정렬된다.insert로 삽입하는 경우 중복된 key라면 무시된다. 그러나 [] 연산자를 사용한 경우 새로운 value로 기존의 value를 덮어쓴다#include #include using namespace std;int main() { map myMap; myMap[5] = "E"; myMap[2] = "B"; myMap[8] = "H"; myMap[1] = "A"; m..
Smart Pointer 보충
·
C++
0. Smart Pointer의 메모리 공간스마트 포인터는 힙 메모리 공간과 스택 메모리공간을 모두 사용한다고 한다.스마트 포인터 자체는 스택 메모리 공간에 저장된다.함수 안에서 선언한 스마트 포인터는 함수가 종료되면, 스택에서 사라지고, 메모리도 해제된다아래의 코드를 실행하면, 생성자와 소멸자 모두 호출된다.int main(){ { std::shared_ptr sharedEntity = std::make_shared(); }}그러나 스마트 포인터가 관리하는 실제 리소스는 힙 메모리에 저장된다.아래의 코드처럼 실행하면, std::cin.get(); 이 실행되기 전까지 소멸자가 호출되지 않는다. (좋은 코드는 아닐 것 같음)이유는 e0가 sharedEntity의 값을 공유했기 때..
C++ TIL day 7
·
C++
1. 자원 관리하기1. 스택 메모리메모리 영역이 크지는 않지만, 생존 영역을 벗어나면 자동으로 해제시켜준다.스택 메모리의 생존 주기는 { } 안이다. 밖으로 나가면 해제된다.static 키워드한번 선언되면, 프로그램 종료될 때 소멸된다.함수 안에서 선언한 후 함수가 끝나더라도, 값이 사라지지 않는다.아래 예시의 경우 11, 12, 13, ... , 20 까지 출력된다.#include using namespace std;void func(){ static int a = 10; a++; cout 2. 힙 메모리프로그램 실행 시 동적으로 할당하는 공간은 힙 메모리를 활용하게 된다.new와 delete 연산자를 이용스택 메모리 영역처럼 자동으로 해제되지 않기 때문에, 코드를 짤 때 조심해야 한다.변수 하나의 동..
C++ 상속
·
C++
오늘 배운 내용 중 중요한 부분인 상속을 좀 더 자세히 이해해 보고자, 구글링과 유튜브 영상을 통해 공부한 후 정리한 글이다.1. 상속을 사용하는 이유클래스 간의 관계 설정하여 코드 재사용성 높이기Class Interface Consistency : 일관적인 클래스 인터페이스 구성 가능abstract / interfacepure virtual functionDynamic Function Binding : 동적 바인딩을 사용하기 (C++는 기본적으로 정적 바인딩)virtual functionvirtual table2. 상속 기본 예제 및 접근 지정자아주 간단한 상속 예제상속 받은 클래스는 부모의 함수를 사용할 수 있다.(public 이니까)#include using namespace std;class An..
C++ TIL day 6
·
C++
1. 프로그래밍 기초Visual Studio 단축키컴파일 CTRL + F7실행 F5값의 전달일반 변수 전달: 변수를 복사하기 때문에 원본의 값은 변하지 않는다.배열의 값 전달: 배열의 경우 배열의 첫번째 위치의 값이 들어있는 주소가 전달되기 때문에 원본의 값을 바꿔준다.참조자를 이용한 전달: 실제 변수의 값 변경#include using namespace std;//일반 변수 전달void ChangeValue(int x){ x = 100;}int main(){ int num = 1; cout #include using namespace std;//배열의 값 전달void ChangeArrayValue(int board[], int size){ if (size >= 0) board[0..
Unreal Engine 5 TIL day 5
·
Unreal Engine
블렌드 스페이스와 움직이는 액터1. 캐릭터 애니메이션1. 개념 설명캐릭터의 생동감을 주기 위해서는 역시 애니메이션이 가장 중요하다.애니메이션 블루프린트애니메이션 블루프린트의 구조애니메이션 블루프린트 안에는 Anim Graph와 Event Graph 가 존재한다.간단히 설명하면, 이벤트 그래프는 상태를 파악할 수 있는 변수들을 저장하며, 애님 그래프는 그 값을 통해 애니메이션을 재생하는 곳이다.Anim Graph: 캐릭터에 대한 애니메이션 별 로직을 생성된다. 블렌딩, 본 트랜스폼, 로코모션 등의 노드가 포함된다.Event Graph: 애니메이션 BP의 Event Graph는 특별한 애니메이션 관련 이벤트 컬렉션을 사용하여, 노드의 시퀀스를 개시하는 역할을 한다.블렌드 스페이스에서 사용할 Axis 값 중 ..
Unreal Engine 5 TIL day 4
·
Unreal Engine
플레이어 캐릭터와 나만의 레벨 디자인1. Player CharacterMesh & Camera settingCharacter mesh를 선택하면, 디테일 창에 skeletal mesh를 선택할 수 있다.Camera는 Spring Arm을 먼저 만든 후 자식 컴포넌트로 Camera를 넣어주어야 한다. 아래 사진을 예시로 보면spring arm이 없다면, 캐릭터가(왼쪽 사진의 경우) 조금 왼쪽으로 이동한 경우 트럭에 캐릭터가 가려서 보이지 않을 것이다.그러나 spring arm이 있으면, camera가 spring arm을 따라서 이동하기 때문에 캐릭터가 가려질 것 같다면, camera가 spring arm을 줄여서 가리지 않도록 해준다. (오른쪽 사진) Move기본적으로 Character라는 클래스는 캐릭..
Unreal Engine 5 TIL day 3
·
Unreal Engine
블루프린트를 이용한 비주얼 스크립팅1. 블루프린트 기본1. 블루프린트 변수위 사진처럼 새로운 변수를 만들고 다양한 타입을 선택하여 지정할 수 있다.Boolean: True 또는 False의 값Byte: 가장 크기가 작은 정수 (0~255)Integer: 일반적인 정수 (-2,147,483,648 ~ 2,147,483,647)Integer64: 가장 크기가 큰 정수 (-9,223,372,036,854, 775, 808 ~ 9,223,372,036,854,775,807)Float: 소수 값Name: 불변하는 경우 사용하는 문자열, 에셋이나 액터의 이름, 태그 시스템 등에 사String: 일반적인 문자열Text: 다국어 변환이 필요한 경우의 문자열Vector: X, Y, Z세개의 값을 가지는 값, 3D 좌표나..