일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- unorder_map
- UML관련
- UELOG
- 데이터애셋
- 강참조
- 프로그래머스
- 정렬알고리즘
- 스마트포인터
- UE_LOG
- 약참조
- 람다
- 구조적 바인딩
- 선택정렬
- 언리얼가비지컬렉터
- 알고리즘
- 람다사용정렬
- enumasByue
- BFS
- 크리티컬섹션
- stl
- 델리게이트
- moreeffectiveC++
- 애셋로드
- dataasset
- map
- C++
- UE4 커스텀로그
- 정렬
- C++최적화
- 자료구조
- Today
- Total
목록Note (425)
기억을 위한 기록들

오름차순or 내림차순으로 정렬되어 배열이 있다고 하고, 정렬 되어 있는 배열에 특정값이 몇번 인덱스에 있는지 찾는 이진검색 알고리즘이 존재한다. 변수명 arr 배열(오름차순)을 넣고 15을 찾는다면 변수명 arr2배열에 주석부분을 서로 바꿔준 뒤 마찬가지로 15을 찾으면 사실 여기까지는 인터넷에 찾아보면 더 자세한 설명도 많이 나온다. 근데 내가 글을 쓴 이유는 순위 시스템에서 새로운 점수를 받았을때 해당 점수가 등수에 반영 가능한 여부를 판단하기 위해서 이다. 그러기 위해 이진검색을 조금 변경 해보았다. 내림차순인 변수명 arr2 배열에서 targetValue 새로운 점수인 70점이 순위에 드는지 여부를 확인하기 위함이다. 결과이다. 출력에 result+1은 실제 배열 인덱스와 우리가 인식하는 등수(1..
1. Stack(LIFO)(기본 컨테이너 : deque) - 컨테이너는 vector, deque, list를 사용 가능 2. Queue(FIFO)(기본 컨테이너 : deque) - 컨테이너는 vector는 사용불가능 / deque, list 사용 가능 3. Priority_queue(우선순위 큐 구현/기본 컨테이너 : vector) - 내부적으로 STL의 힙 알고리즘 make_heap(), push_heap(), pop_heap() 사용하여 구현. - 임의 접근 반복자를 제공하는 컨테이너(vector/deque) 사용가능
반복자는 포인터를 추상화한 클래스 객체. 포인터가 하지 못하는 더 많은 동작을 수행 할 수 있다. 자료 형식이 있어 효율적인 연산이 가능하듯이 반복자도 각 반복자만의 특징을 가지는 5가지의 반복자가 있다. 1. 입력 반복자(input iterator) : 전방향 읽기 연산 제공 - *iter(읽기) - ->(멤버 읽기) - ++(전방향 이동) - ==,!=(비교) - iterator(iter) 2. 출력 반복자(output iterator) : 전방향 쓰기 연산 제공 - *iter=x(쓰기) - ++ - iterator(iter)(복사생성자) 3. 순방향 반복자(forward iterator) : 전방향 읽기, 쓰기 연산 제공 - *iter - -> - ++ - ==,!= - =(대입) - iterato..
헤더에 정의되어 있는 함수객체는 함수자라는 애칭으로 더 많이 사용되며, opertator() 연산자를 오버로딩한 클래스 객체입니다. 일반 함수 객체 : 특정 기능을 수행하는 함수 객체 - 산술 연산 함수 객체 : 사칙연산 기능을 수행하는 plus, minus, multiplies,divides,modulus,negate 등 - 비교 연산 함수 객체 : 비교 조건자 equal_to, not_equal_to, less, greater, greater_equal, less_equal 등 - 논리 연산 함수 객체 조건자 : 논리 조건자 logical_and, logical_or, logical_not 함수 어댑터(function adapter) - 바인더 : 이항 함수 객체를 단항 함수객체로 변환(bind1st..
1. 원소를 수정하지 않는 알고리즘 - 원소의 순서나 값을 변경하지 않고 원소를 읽기만 하는 알고리즘 (탐색/비교 등) 2. 원소를 수정하는 알고리즘(덮어쓰기 모드로 동작. 삽입모드로 동작하려면 insert_iterator 사용) - 원소의 값을 변경하거나, 목적지 순차열로 원소를 복사하는 알고리즘 (복사/채우기/교환/합병/수정 등) 3. 제거 알고리즘 - 2번 '원소를 수정하는 알고리즘'의 특수한 형태로 원소를 실제로 제거하지 않고 논리적으로 제거(다음 원소로 덮어쓰기)하기 때문에 순차열의 size를 실제로는 변경X(실제로 변경하려면 컨테이너의 erase()함수 사용) (제거/조건제거) 4. 변경 알고리즘(순서 변경) - 순차열의 원소를 서로 교환하거나 이동하여 순차열 원소의 '순서'를 변경하는 알고리..
시퀀스 컨테이너 - 원소가 상대적인 위치(순서)를 유지하므로 가장 앞요소와 뒤 요소를 참조하는 front()/back() 함수 제공 - 컨테이너 끝에 추가/제거 하는 push_back(),pop_back() 멤버함수 제공 시퀀스 컨테이너 종류 1.vector - 배열기반 - 원소가 하나의 메모리 블록에 연속하게 저장(연속 메모리기반) - 원소 추가or삽입 이루어 질때, 메모리 재할당 발생 할 수 있으므로 메모리 할당크기를 알 수 있게 capacity() 멤버함수 제공 - 메모리 크기 예약 reverse() 멤버 함수 - insert()/erase()/push_back() 빈번하게 이루어진다면, 다른 컨테이너 고려 - pop_front()/push_front()는 제공하지 않음. vector에서 매우 비효..

점진적으로 iterator의 익숙해지도록 하기 위해 정리하였다. container.begin() ->해당 배열의 시작지점을 지정해준다. container.end() -> 마지막 지점을 지정해준다. ++itr ->다음 배열을 가리키기위해 이동한다. *itr ->iterator 가 가리키는 원소에 접근한다. auto는 편리한거같다.
https://en.cppreference.com/w/ cppreference.com Null-terminated strings: byte − multibyte − wide en.cppreference.com

이전에 작성하였던 넓이우선탐색(BFS)은 말그대로 해당 그래프에 어떤 요소가 있는지 전체적으로 탐색한것이였다. 이제 여기서 좀 더 나아가 해당 그래프에서 시작점과 목표점를 정하여 해당 두 점이 이어져 있는지 확인하는 알고리즘을 확인해보자 . 이전에 작성했던 Graph 클래스에서 새롭게 추가 된 bool형을 반환하는 Search함수이다. 이제 이 함수를 이용해서 확인해보자. 이런 그래프가 있다고 하면 6과7이 나머지 노드들과 떨어져 있는 상태이다. 예를 들어 1에서 7까지 갈수 있는지 여부를 확인한다고 하면 결과가 0이 나온다(실패) 이제 이 노드들을 이어준다. 이렇게 5번과 6번 노드를 추가로 이어주고, AddEdget(5,6)을 추가해준 뒤 확인해보면 결과는 1로 출력된다.(성공) 여기까지는 이제 갈수..
(시간 관련 *월드에는 시간 관리자(TimeManager)가 있는데 접근하면 게임에 필요한 다양한 시간 값들을 얻어 올 수 있다. Tick 함수의 DeltaSeconds 값은 GetWorld()->GetDeltaSeconds() 함수를 사용해 가져 올 수 있다.(Tick 함수가 아닌 곳에서 프레임 시간을 가져오고자 할 때 해당 함수는 유용함. *게임이 시작되고 현재까지 경과 된 시간 : GetWorld()->GetDeltaSeconds() *사용자가 게임을 중지한 시간을 제외한 경과 시간 : GetWorld()->GetUnpausedTimeSeconds() *현실세계의 경과 시간 :GetWorld()->GetRealTimeSeconds() *사용자가 게임을 중지한 시간을 제외한 현실세계의 경과 시간 :G..
Unreal C++ 정리 작명 참고문서 : http://api.unrealengine.com/KOR/Programming/Development/CodingStandard/index.html 코딩 표준 언리얼 엔진 4 코드베이스에 에픽게임스가 사용하는 표준과 규칙입니다. docs.unrealengine.com 코멘트는 소통이고, 소통은 중요합니다. 코멘트에 대해 명심하실 점이 몇 가지 있습니다 (Kernighan & Pike 의 The Practice of Programming 에서): (유형이나 변수 등의) 이름 내 각 단어의 첫 글자는 대문자로 써야 하며, 단어 사이에 보통은 공백을 띄우지 않습니다. Health 와 UPrimitiveComponent 정도를 예로 들 수는 있지만, lastMouseCo..

이번엔 스택이다. 스택 쌓자 스택 클래스와 해당 스택에 쌓는 노드 클래스 2개의 클래스로 구성 되어 있다. template class Node { public: Node(T _data) : mData(_data) {}; ~Node() { delete mNextNode; }; T mData; //현재 노드에 있는 데이터 Node* mNextNode; //현재 노드의 다음 노드를 가리키는 포인터 }; template class Stack { public: Stack() {}; ~Stack() {}; void Push(T newItem); T Pop(); T GetTopData(); bool IsEmpty() const; int GetStackSize() const; private: Node * mTopNod..