언어 및 엔진(79)
-
[C++] Map / HashMap
Map / HashMap 맵과 해시맵이 각각 컨테이너 내부의 값을 찾을 때 시간복잡도 해시맵이 빠른 이유 맵 균형 이진 트리(레드블랙트리), 삽입과 동시에 자동으로 정렬 해시 맵(Unordered Map) 해시 테이블. 정렬 할 필요가 없음. 키 값을 대입하여 나온 번호에 벨류를 저장. 일반적으로 데이터 양이 많을 때 맵 보다 해시맵이 빠르다. 맵의 시간복잡도는 O(log N), 해시 맵의 시간복잡도는 O(1) 키의 데이터 타입이 숫자일 때와 문자열일 때 현저한 차이가 있음(문자열일 때 더 복잡)
2024.04.18 -
[C++] Heap
Heap 동적으로 할당된 변수에 할당되는 영역. 후입선출을 한다 용량은 컴퓨터의 남은 메모리 영역 만큼.
2024.04.18 -
[C++] Stack Overflow
Stack Overflow 스택의 기본 용량인 1메가바이트를 넘은 것. 지역변수 선언 시 전역으로 정적배열을 선언하면 힙 영역으로 메모리가 할당되어 오류가 뜨지 않고 사용 가능 주요 원인은 무한루프 -추가- 이건 내가 전공을 할 때 얻은 지식이다. 해킹에서도 자주 써먹는 방식인데, Stack Buffer Ovewflow라고 한다. 주로 고정된 길이를 갖는 배열? 메모리 주소를 악의적으로 터트리게 되는데, 스택 스매싱 으로도 불린다.
2024.04.18 -
[C++] Stack
Stack 함수매개변수, 지역변수 및 기타함수 관련 정보를 저장하는 영역 크기는 개발자가 설정한 만큼
2024.04.18 -
[C++] 가장 빠른 정렬 알고리즘
가장 빠른 정렬 알고리즘 퀵 정렬, 합병 정렬(차선책) 퀵 정렬은 순차적으로 데이터가 들어오면 버블정렬과 다를 바 없이 느림. 그래서 퀵 정렬보다 빠른 머지정렬(합병정렬)이 더 빠름 퀵 정렬 분할정복 방식(Divide And Conquer) 평균적으로 log의 시간 복잡도 -> 다른 정렬 알고리즘에 비해 속도가 빠름. 합병 정렬 안정 정렬. 분할 정복방식 장점 : 안정적임, 링크드 리스트로 구현 시 인덱스만 변경 되기 때문에 데이터의ㅐ 이동 거의 없음 단점 : 배열로 구성 시 임시배열 필요, 크기가 큰 경우 시간소요가 큼
2024.04.18 -
[C++] 온라인 게임에서 효율적인 정렬 알고리즘
온라인 게임에서 효율적인 정렬 알고리즘 삽입 정렬 회원가입을 무작위로 할텐데 그때마다 정렬해야 하기 때문 장점 : 안정적임, 알고리즘이 간단, 이미 대부분 정렬되어 있는 상태에서 매우 효율적 단점 : 많은 레코드들의 이동을 필요로 함, 수가 많고 크기가 클 경우 적합하지 않음
2024.04.18