분류 전체보기
C++ POD, 표준 레이아웃 타입, 간단한 타입
POD (Plain Old Data) 메모리 상에서 연속적인 바이트 열이다. 다형성이나 유저가 정의한 복사 의미론 등과 같은 진보된 의미론 문법이 필요없을 때 개체를 POD로 취급해야 할 때가 있다. 왜냐하면, POD로 취급하면 하드웨어에서 좀 더 효율적으로 개체를 옮기거나 복사할 수 있기 때문이다. POD 개체는 다음 조건을 갖춰야 한다. 표준 레이아웃 타입(standard layout type)이어야 한다. 간단한 타입(trivial type)이어야 한다. POD가 될 수 있는 조건 복잡한 레이아웃을 갖지 않는다.(가상 함수 등) 유저가 정의한 복사 의미론을 갖지 않는다. 간단한 기본 생성자를 갖고 있다. 의 std::is_pod를 이용하면 쉽게 알 수 있다. 표준 레이아웃 타입 C와 분명하게 같은 ..
언리얼엔진5 다운로드 및 4에서 업그레이드 방법
여기서 .zip 파일로 받던지 git clone을 한다. 총 용량은 대략 120gb이다, 속도 향상을 시키기 위해선 ssd에 설치하는건 필수, https://github.com/EpicGames/UnrealEngine 난 다 필요없고 오직 기본꺼만 필요한다하면 에픽 스토어 앱 통해서 다운 받아도 된다. 프로젝트를 까보면 아래와 같이 2개의 .bat 파일이 있을 것이다, 우선 Setup부터 실행시킨다. .uproject 파일 우클릭 후 버전을 선택했을 시 아래와 같은 에러가 뜬다. 아까 위에 GenerateProjectFiles.bat를 실행시킨 후 설치 해야한다. 이제는 아래와 같은 폴더들을 삭제 후 재생성한다, .sln 파일 열었을 때 아래와 같이 뜬다면 정상적으로 된 것이다. 하지만 여기서 문제점이 ..
[Unreal] 액터 스폰과 Owner 관련, 렌더타깃 UI
아래 함수는 스폰 함수다 template T* SpawnActor( UClass* Class, const FActorSpawnParameters& SpawnParameters = FActorSpawnParameters() ) { return CastChecked(SpawnActor(Class, NULL, NULL, SpawnParameters),ECastCheckedType::NullAllowed); } Class는 스폰하고자 하는 클래스다, 클래스::StaticClass() FActorSpawnParameters 구조체형인 독특한 인자가 넘어가는데 여기서 Owner로 액터를 지정해주면 되겠다. void UPrimitiveComponent::SetOwnerNoSee(bool bNewO..
[Unreal] 컴포넌트 부착 함수와 방법
// 컴포넌트가 등록이 안되어있을 시, 렌더링 되기 위해선 컴포넌트를 등록 해줘야됨. // 오직 NewObject()로 생성 되어있을 시, CreateDefaultSubObject()로 생성 되었으면 해줄 필요x 뻥남 컴포넌트->RegisterComponent(); // 루트 컴포넌트가 등록이 안되어 있을 시 (월드 기준으로 됨) 컴포넌트->SetupAttachment(부착하고자 할 액터의 루트 컴포넌트, 메쉬 소켓 명칭); // 루트 컴포넌트가 등록이 되어 있을 시 컴포넌트->AttachToComponent(부착하고자 할 액터의 루트 컴포넌트, 부착 방법, 메쉬 소켓 명칭); AttachTo < 버려질 함수라 가급적이면 사용권장 x 부착 방법은 아래와 같다. KeepRelativeTransform : ..
C++ namespace와 using
공동 작업 하다보면 네임스페이스로 나눠야 할 경우가 많다. namespace 네임스페이스 네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역이다. 네임스페이스는 코드를 논리 그룹으로 구성하고 특히 코드베이스에 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는 데 사용된다. 네임스페이스 범위에 있는 모든 식별자는 한정 없이 서로에게 표시된다. 네임스페이스 외부의 식별자는 각 식별자에 대해 정규화된 이름을 사용하거나, std::vector vec;단일 식별자에 대한 using Declaration(또는 네임스페이스using namespace std;(using std::string)의 모든 식별자에 대한 using 지시문을 사용하여 멤버에 액세스할 수 ..
[실1] 1932 - 정수 삼각형
#include #include using namespace std; int arr[501][501]{ 0 }; int dp[501][501]{ 0 }; int main() { int n; cin >> n; for (int i = 1; i arr[i][j]; dp[1][1] = arr[1][1]; for (int i = 2; i
[실3] 15650 - n과 m(2)
#include #include using namespace std; #define MAX 9 int n, m; int arr[MAX]{ 0 }; bool visited[MAX]{ 0 }; void dfs(int num, int depth) { if (depth == m) { for (int i = 0; i < m; i++) cout m; dfs(1, 0); }
[실3] 15649 - n과 m(1)
#include using namespace std; #define MAX 9 int n, m; int arr[MAX]{ 0 }; bool visited[MAX]{ 0 }; void dfs(int depth) { if (depth == m) { for (int i = 0; i < m; i++) cout m; dfs(0); }
[골5] 7569 - 토마토
#include #include #include #include #include #include #include #include using namespace std; using int_pair = pair; #define SIZE 1000 #define y first #define x second // 윗층 뒤 우 아래층 잎 좌 pair arr_pos[] { {1, {0, 0}}, {0, {-1, 0}}, {0, {0, 1}}, {-1, {0, 0}}, {0, {1, 0}}, {0, {0, -1}} }; vector graph; // w:넓이, h:높이, l:층수 int w, h, l; queue q; void BFS() { #define ARR_POS_SIZE 6 while (!q.empty()) { ..