[내일배움캠프 Day37] TWeakObjectPtr
·
내일배움캠프/TIL
과제를 진행하면서 위와 같이 에러가 발생하였는데, 맵이 바뀌면서 기존의 파티클이 제거되었는데도 파티클을 없애려고 하는 것이 원인이었습니다. 아래 언리얼 공식 문서를 보면 자세하게 나와있습니다.https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-object-handling-in-unreal-engine UParticleSystemComponent* Particle = nullptr;GetWorld()->GetTimerManager().SetTimer( DestroyParticleTimerHandle, [Particle]() { if (Particle) { Particle->Des..
[내일배움캠프 Day35] 알고리즘 수업 1주차 과제
·
내일배움캠프/TIL
코드#include #include #include using namespace std;int main() { map> students; // ID, 과목, 점수 map>> scores; // 과목, ID, 점수 cout > choice; // 학생 성적 추가 if (choice == 1) { int id, score; string subject; cout > id >> subject >> score; // 0 ~ 100점까지 유효한 범위 if (score 100) continue; students[id][sub..
[내일배움캠프 Day34] push_back과 emplace_back의 차이점
·
내일배움캠프/TIL
push_back()과 emplace_back() 둘 다 벡터의 뒤쪽에 원소를 추가합니다. 그런데 실제로 구현된 복사/이동 방식은 크게 다르며, 성능에서도 차이가 납니다. push_back()vs.push_back(s)는 문자열을 벡터로 복사합니다. 먼저, char *로 초기화된 새 문자열 객체가 암시적으로 생성됩니다. 그 다음 push_back()이 호출되는데, push_back()은 이동 생성자를 이용해 임시 문자열을 벡터로 복사합니다. 작업이 다 끝나면 임시 객체를 없앱니다.   emplace_back()vs.emplace_back(s)는 임시 문자열을 생성하지 않습니다. emplace_back()이 char *를 인수로 하여 직접 호출합니다. 그런 다음 이 char *로 초기화된 벡터에 저장할 문..
[자료구조] 레드 블랙 트리
·
자료구조
레드 블랙 트리는 균형 이진 탐색 트리로 탐색, 삽입, 삭제 모두 시간 복잡도가 O(logn)입니다. C++ STL의 set, multiset, map, multimap이 이 레드 블랙 트리를 이용해 구현되어 있습니다. 레드 블랙 트리가 균형을 유지하는 비결레드 블랙 트리는 아래의 규칙을 지킴으로써 균형을 유지합니다.모든 노드는 빨간색 또는 검은색의 색을 가진다.루트 노드는 검은색이다.잎 노드(NIL)는 검은색이다. (NIL : null leaf, 데이터를 갖지 않고 트리의 끝을 나타내는 더미 노드)빨간 노드의 자식은 모두 검은색이다, 하지만 검은색 노드의 자식이 빨강일 필요는 없다.루트 노드에서 모든 잎 노드 사이에 있는 검은색 노드의 수는 모두 동일하다. 레드 블랙 트리의 기본 연산회전회전은 부모-자..
[내일배움캠프 Day32] 가상 함수 동작 원리
·
내일배움캠프/TIL
C++의 가상 함수 동작 원리가상 함수는 'vtable', 혹은 가상 테이블(virtual table)에 의존한다. 어떤 클래스의 함수가 virtual로 선언되어 있으면, 해당 클래스의 가상 함수 주소를 보관하는 vtable이 만들어진다. 컴파일러는 또한 해당 클래스의 vtable을 가리키는 vptr이라는 숨겨진 변수(hidden variable)를 해당 클래스에 추가한다.하위클래스가 상위 클래스의 가상 함수를 오버라이드(override)하지 않으면 하위 클래스의 vtable은 상위 클래스의 가상 함수 주소를 보관한다. 이 vtable을 사용하여 가상 함수가 호출될 때 어느 주소에 있는 함수가 호출되어야 하는지를 결정한다. c++의 동적 바인딩(dynamic binding)은 이 가상 테이블 메커니즘을 ..
[내일배움캠프 Day31] 순차 컨테이너
·
내일배움캠프/TIL
순차 컨테이너(sequential container)는 원소들이 선형으로 배열된 데이터 구조를 나타냅니다. 컨테이너헤더설명array표준 C 언어 스타일 배열vector활용도가 높은 기본 컨테이너list연결 리스트(linked list)deque양방향 큐(queue) 배열(std::array)array는 고정된 크기의 배열을 담는 컨테이너입니다. 인덱스를 이용해 원소에 빠르게 접근할 수 있다는 장점이 있습니다. 배열 컨테이너 선언#include using namespace std;array 객체_이름; array 컨테이너를 초기화하는 방법은 일반 배열과 같습니다. 또한 일반 배열처럼 [] 연산자로 각 원소에 접근할 수 있습니다. 배열의 유효 범위 밖의 인덱스로 접근을 시도하면 런타임 오류가 발생합니다.ar..
[객체지향의 사실과 오해] 5장. 책임과 메시지
·
책/객체지향의 사실과 오해
“5장. 책임과 메시지”에서는 훌륭한 메시지가 훌륭한 객체지향 설계의 기반이라는 사실을 강조합니다. 객체의 자율성과 설계의 유연성은 얼마나 훌륭한 메시지를 선택하느냐에 달려 있습니다. 여러분이 이 책에서 단 하나의 장만 읽겠다고 한다면 5장을 읽기를 권해드리겠습니다. 목차에 나온 글로, 5장은 지금까지 1~4장에 나온 추상적인 내용들을 좀 더 자세하게 어떤 식으로 구현해야 되는지 알려주는 장이라고 생각합니다. 작가나 많은 후기에서 5장이 이 책의 핵심이라고 말하는 것처럼, 저 또한 5장을 통해 객체지향의 개념을 더 명확하게 이해할 수 있었다고 생각합니다.  존 달리와 밥 라타네의 방관자 효과 실험의 교훈 : 명확한 책임과 역할을 지닌 참가자들이 협력에 참여해야 한다. 이는 객체의 세계도 마찬가지다.훌륭한..
[객체지향의 사실과 오해] 4장. 역할, 책임, 협력
·
책/객체지향의 사실과 오해
“4장. 역할, 책임, 협력”에서는 객체지향 설계의 가장 중요한 재료인 역할, 책임, 협력에 관해 설명합니다. 객체들은 협력에 참여하기 위해 특정한 역할을 맡고 역할에 적합한 책임을 수행하게 됩니다. 대부분의 사람들은 객체지향이라는 말에서 클래스와 상속을 떠올리겠지만 4장을 읽고 나면 역할, 책임, 협력이 객체지향의 핵심이라는 사실을 알게 될 것입니다. 목차에 나온 글로 지금까지 앞에서 나온 내용은 행동이 상태를 결정한다는 내용이었는데 이번 장에서는 그 행동을 결정하는 것이 어떤 협력을 참여하는지라고 말합니다. 즉, 행동이나 상태가 아니라 객체들 간의 협력에 집중해야 한다가 이번 장의 주제입니다. 최후통첩 게임이 사례로 나온다. 결론적으로 인간이 어떤 본질적인 특성을 지니고 있느냐가 아니라 어떤 상황에 ..
[내일배움캠프 Day30] auto
·
내일배움캠프/TIL
autoC+11이전의 auto는 지역 변수 선언에 해당하는 기억 분류 지정자입니다. 어차피 생략하면 auto로 지정되고 스택을 사용하도록 컴파일하기 때문에 사실상 거의 사용하지 않았습니다.auto int x = 10; // int x = 10; 과 동일 C+11로 변경되면서 auto의 의미가 새롭게 바뀌었습니다. 초깃값의 형식에 맞춰 선언하는 인스턴스의 형식이 ‘자동’으로 결정됩니다. 즉, 컴파일러가 자동으로 형식을 규정하는 자료형입니다. 컴파일 타입에 실행됩니다.컴파일러 입장에서 auto만 보고 변수 타입을 판단할 수 없기 때문에 선언만 하고 초기화를 하지 않으면 사용할 수 없습니다.auto a = 10; // int로 추론auto 변수는 반드시 선언과 함께 초기화해야 한다.함수에서 매개변수의 형..
[객체지향의 사실과 오해] 3장. 타입과 추상화
·
책/객체지향의 사실과 오해
“3장. 타입과 추상화”에서는 소프트웨어 개발에서 가장 중요한 개념인 추상화와 마주치게 될 것입니다. 거창해 보이지만 추상화는 단순화를 의미합니다. 객체지향 패러다임에서 가장 널리 사용되는 추상화는 동적인 객체들을 단순화시켜 정적인 타입으로 갈무리하는 것입니다. 타입의 개념을 이해하고 나면 객체를 구현하기 위해 클래스를 사용하는 이유를 이해하게 될 것입니다. 목차에 나온 글로 3장은 추상화에 대해 설명합니다. 2장과 마찬가지로 앨리스 이야기를 예시로 들면서 트럼프로 추상화하는 사례를 보여줍니다. 3장 역시 '행동'이 중요합니다. 지하철 노선을 추상화한 사례가 나온다. 초기의 지하철 노선도는 너무 사실적인 정보를 제공해 오히려 지하철을 이용하는 승객들로 하여금 노션들을 이해하기 어려웠다. 해리 벡은 지도로..