Make Unreal REAL.
article thumbnail
깊은 복사와 얕은 복사
C++/기타 2023. 1. 20. 21:37

깊은 복사 (Deep copy) 다른 Memory chunk를 만들어 값을 복사한다. 한 쪽에서 값을 수정해도 다른 쪽에 영향을 미치지 않는다. 얕은 복사 (Shallow copy) 같은 Memory chunk를 가리키게 된다. 한 쪽에서 값을 수정하면 다른 쪽에 영향을 미친다. #include #define ARR_SIZE 5 using namespace std; void main() { int* p; int arr[ARR_SIZE] = {1, 2, 3, 4, 5}; // 얕은 복사 p = arr; // 깊은 복사 p = new int[ARR_SIZE]; for (int i = 0; i < ARR_SIZE; ++i) p[i] = arr[i]; delete[] p; p = nullptr; }

article thumbnail
std::iterator와 std::reverse_iterator
C++/기타 2023. 1. 20. 21:25

반복자는 증감 연산자, 비교 연산자를 지원한다. 순방향 반복자(Forward Iterator) 앞에서 뒤 방향으로 진행한다. 역방향 반복자(Reverse Iterator) 역방향 반복자는 뒤에서 앞 방향으로 진행한다. #include #include using namespace std; void main() { vector v = {1, 2, 3, 4, 5}; for (vector::iterator it = v.begin(); it != v.end(); ++it) cout

article thumbnail
std::array

코딩 테스트를 위한 자료 구조와 알고리즘 with C++ C-style 배열의 문제점 메모리 할당, 해제를 수동으로 처리해야 한다. 배열 범위 밖의 원소를 참조하는 것을 검사하지 못한다. 깊은 복사를 제공하지 않는다. std::array 메모리를 자동으로 할당하고 해제한다. array.at(int index) 함수를 이용해 범위 밖 원소 참조에 대한 예외 처리가 가능하다. 배열의 크기가 같은 경우 깊은 복사, 깊은 비교를 지원한다. #include #include using namespace std; template void print(const array& arr) { for (T e : arr) cout

article thumbnail
Git의 Cherry-pick

The Ultimate Git Course - with Applications in Unreal Engine 요구 사항 변경 등으로 프로젝트 진행이 바뀌거나 의존성 문제 때문에 다른 Branch의 특정 commit만 가져와야 하는 일이 종종 생긴다. Cherry-pick은 commit IDㄹ르 이용해 다른 Branch의 특정 commit만을 현재 Branch에 가져올 수 있다.

article thumbnail
Git의 Stash

The Ultimate Git Course - with Applications in Unreal Engine 수정 사항을 잠시 빼놓는 작업이다. Tracked 파일들의 변경 사항과 Staged 된 변경 사항에 적용된다. Stash 수행 후에 git status를 실행하면 clean 상태라고 나온다. (Untracked 상태인 파일이 없다면) Stash stack이라는 공간에 순차적으로 쌓이며 LIFO 구조를 가진다. 넣었던 stash들을 하나씩 다시 가져와 적용할 수도 있다. 다음과 같은 상황에서 사용하면 유용하다. commit 하기엔 부족한 코드가 있는데 Branch를 바꾸고 싶을 때 아직 수정 중인 코드가 있는데 Merge conflicts가 발생할 때 물론, Stash 시에도 pop 하려는 내용과 ..

article thumbnail
Git의 Interactive Rebase

The Ultimate Git Course - with Applications in Unreal Engine 여러 commit들을 하나로 묶거나 순서를 변경하는 것을 뜻한다. 하나의 기능을 구현하는데 여러 개의 commit이 사용된 경우에 이것들을 하나의 큰 변경 사항으로 묶을 수 있다. 흔히 Squash라고 알려져 있으나, squash는 사실 Interactive Rebase에서 지원하는 명령어 중 하나이다. pick: commit을 사용 reword: commit을 사용하고 commit 메시지 변경 squash: commit을 사용하고 이전 commit과 병합 위 명령어들을 git-rebase-todo에 적절히 사용하여 commit들을 묶거나 순서를 바꿀 수 있다. Interactive Rebase를..

검색 태그