분류 전체보기
[Unreal] 자료구조 순회 방법
TMap 변수명; Key = 키, Value = 값 범위 기반 for문 사용 구현, . 멤버 변수 접근자 사용 예) 변수명.Key, 변수명.Value for (auto 변수명 : TMap 변수명) { } 이터레이터 사용 구현, it-> 화살표 연산자 참조 또는 (*it) 역참조로 접근 예) it->Key, (*it).Value 주의) TConstIterator 형이지만 != 연산자는 nullptr과 비교 불가다. ++ 연산자는 파라미터를 봐서는 전위 연산자인데 후위 연산자는 복사 오버헤드로 인해 막아놓은듯 하다. for (auto it = TMap 변수명.CreateConstIterator(); it; ++it) { }
C++ vector empty()와 size()간 차이
vector::empty() 벡터가 비어있는지 확인하는 함수이다. Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True 시간 복잡도 : O(1) #include #include using namespace std; int main() { vector myvector{}; if (myvector.empty()) { cout
C++ NULL과 nullptr의 차이
1. int* 포인터에 정수 값 대입 int Integer, *Pointer; void print(int ptr) { Integer = ptr; cout
C++ vector사용법 및 설명 (장&단점)
vector vect; // vect는 stack, 각 원소들은 heap vector *vect = new vector; // vect와 각 원소들 모두 heap vector vect; // vect는 stack, 각 원소들은 heap 그리고 가리키는 대상들은 heap 또는 stack https://stackoverflow.com/questions/8036474/when-vectors-are-allocated-do-they-use-memory-on-the-heap-or-the-stack 속도적인 측면에서 array(배열)에 비해 성능은 떨어지지만 메모리를 효율적으로 관리하고 예외처리가 쉽다는 장점이 있다. Vector의 초기화 vector 변수명 백터 생성 vector 변수명(숫자) 숫자만큼 백터 생성 ..
C# 가변 길이 배열 (Variable Length Array)
가변 길이 배열은 2차원 배열에서 각각의 첫번째 원소에 다른 길이의 배열을 담는 것이다. C#은 C++과 달리 고정 길이 배열은 [ 행 크기 , 열 크기 ] 이다. [][]는 가변 길이 배열을 뜻한다.한 가지 특이사항이라면 foreach 돌릴 시 고정 길이 배열은 전체의 인덱스를 탐색한다, 반대로 가변 길이 배열은 순차적으로 행에 해당되는 원소에만 접근한다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApplication1 { public class Parent { public static readonly int Height = 3; public static rea..
C++ 가변 길이 배열 (Variable Length Array)
가변 길이 배열은 2차원 배열에서 각각의 첫번째 원소에 다른 길이의 배열을 담는 것이다. 아래는 C 스타일이다. #include using namespace std; int main() { // ------- 고정 길이 배열 ------- int arr[10]{ 5 }; for (int i = 1; i < 10; i++) arr[i] = arr[i - 1] + 5; // ------- 가변 길이 배열 (C 스타일 배열 사용) ------- int arr2[3]{ 1, 2, 3 }; int arr3[5]{ 4, 5, 6, 7, 8 }; int* variableArr[3]; *variableArr = arr; *(variableArr + 1) = arr2; *(variableArr + 2) = arr3; c..
C/C++ 포인터 역참조 (deference)
배열의 포인터는 크게 *(단일 포인터) 또는 **(이중 포인터)로 받을 수가 있다. 역참조는 해당 포인터가 자기 자신을 가리키게끔 하는건데 예시로 *ptr이면 ptr-> 성질과 비슷하다, 즉 null 포인터일 시 당연히 뻥난다. *ptr는 arr의 시작 주소를 받아내고 전체 배열의 접근이 가능하다. *ptr2는 단일 주소 포인터다, 오직 할당받은 &배열[인덱스]에만 접근 가능하다. *(ptr3)[10] 이건 이중 포인터로 받아내는 것이다, 2차원 배열 또는 포인터 배열로 접근할 수가 있다. #include using namespace std; int main() { int arr[10]{ 5 }; for (int i = 1; i < 10; i++) arr[i] = arr[i - 1] + 5; int* p..
[Unreal] FTimerManager 타이머 설정
#include "TimerManager.h"를 추가해주면 된다. 생성자가 FTimerManager() = delete;로 되어있기 때문에 인스턴스화 시킬 수 없다. 각 인자 값으론 FTimerHandle 쓰여질 핸들 InRate 반복될 횟수 inbLoop 무한반복 여부 InFirstDelay 첫 발동까지 대기시간 const FTimerDelegate&, const FTimerDynamicDelegate&, TFunction&& 함수 포인터 UserClass* 타이머를 적용할 대상 오브젝트 FTimerHandle handle; float rate = 1.f; float inFirstDelay = 0.f; bool bLoop = false; FTimerDelegate timerDele; FTimerDyna..
[Unreal] 화면 정중앙 조준선 위치 기반 레이캐스트
FVector startPos = 소환위치(FVector); float maxRange = 10000.f; // 카메라 기반으로 구하기 auto cameraManager = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0); auto traceStartPos = UKismetMathLibrary::ProjectPointOnToPlane(cameraManager->GetCameraLocation(), startPos, cameraManager->GetActorForwardVector()); auto traceEndPos = traceStartPos + (cameraManager->GetActorForwardVector() * maxRange); // 게임 ..
[Unreal] 문자열 변환 - FName, FText, FString
문자열 클래스간 변환 변환 형식 변환 방법 FName → FString TestString = TestName.ToString(); FName → FText TestText = FText::FromName(TestName); FString → FName TestName = FName(*TestString); // 손실 위험 있음. FName이 대소문자 구분 없음 FString → FText TestText = FText::FromString(TestString); FText → FString TestString = TestText.ToString(); // 안전하지 않음. 언어 변환시 손실 위험 때문 FText → FName FText → FString -> FName // 직접 변환 없음 // 손실 위..