일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- moreeffectiveC++
- UELOG
- dataasset
- C++
- UE_LOG
- 애셋로드
- 약참조
- 델리게이트
- 정렬
- 자료구조
- 언리얼가비지컬렉터
- BFS
- 강참조
- stl
- 람다사용정렬
- 스마트포인터
- UE4 커스텀로그
- 언리얼엔진구조체
- unorder_map
- 크리티컬섹션
- 프로그래머스
- enumasByue
- 데이터애셋
- UML관련
- 알고리즘
- map
- 정렬알고리즘
- 선택정렬
- C++최적화
- 람다
- Today
- Total
목록자료구조 (3)
기억을 위한 기록들
이번엔 링크드 리스트다. 장점: - 새로운 노드의 추가/삽입/삭제 쉽고 빠름( 배열은 요소를 삽입하거나 제거하기 어렵) 단점 : - 다음 노드를 가리키려는 포인터 때문에 각 노드마다 4바이트의 메모리가 추가로 필요. - 특정 위치에 있는 노드를 얻는데 드는 비용이 크며, 속도도 느리다. 링크드리스트의 필요한 기본 연산은 5가지 - 노드생성/소멸 - 노드 추가 - 노드 탐색 - 노드 삭제 - 노드 삽입 코드 : #include using namespace std; template class Node { public: Node() {}; Node(T _data) :data(_data) {} ~Node() {}; T data; //현재 노드에 있는 데이터 Node * next; //현재 노드의 다음 노드를 가..
이번엔 스택이다. 스택 쌓자 스택 클래스와 해당 스택에 쌓는 노드 클래스 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..
큐(Queue 클래스)에서 관리하는 데이터는 Node 클래스로 구성되어있다. 작성된건 링크드 큐이기도 한데, 순환큐도 있다. 순환큐는 배열에서 사용되서 new와 같은 연산이 없고, 고정배열이라 빠르나, 사이즈 제한이 있다. 어느정도 정해진 수만큼의 큐를 만든다면 순환큐도 좋다. template class Node { public: T mdata; //노드 값 변수 Node* NextNode; //해당 노드의 다음 노드 Node(T _data) :mdata(_data) {}; ~Node() {}; }; template class Queue { public: Queue() : mhead(nullptr), mtail(nullptr) {}; //기본값 초기화 ~Queue() {}; void Enqueue(T _..