일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IFileDialog
- UnrealEngine4
- 언리얼엔진5
- Frustum
- C++
- NRVO
- 줄 세우기
- GeeksForGeeks
- const
- DirectX11
- UnrealEngine5
- 1563
- directx
- Unreal Engine5
- RVO
- winapi
- 2294
- softeer
- 백준
- 오블완
- RootMotion
- C
- 팰린드롬 만들기
- 티스토리챌린지
- Programmers
- baekjoon
- 프로그래머스
- TObjectPtr
- UE5
- algorithm
- Today
- Total
목록vector (2)
Game Develop

미리 충분한 크기의 메모리를 확보하지 않은 vector같은 경우, capacity이상의 원소를 push 하려 할 경우, 재할당을 통해 capacity를 늘린다. (push든, insert든) v는 8개의 원소로 초기화되었기 때문에 초기 capacity값은 8이다. 그 상태에서 추가로 원소를 push한다면 메모리가 부족하기 때문에 더 큰 크기의 메모리로 재할당을 해줘야한다. 보통 1.5배 크기로 재할당 되며, 그렇기때문에 위 코드에서 푸쉬 후의 capacity는 8 * 1.5인 12가 재할당되었다. 메모리재할당은 런타임도중에 자주 일어나면 안되는 행위중 하나이다. 이렇게 메모리재할당이 많아진다면 메모리단편화도 많이 발생할 것이다. 그렇기 때문에 만약 해당 vector에서 최대로 사용할 원소의 개수를 미리 ..

vector의 멤버함수 capacity는, 현재 메모리의 재할당없이 몇개의 원소를 집어 넣을 수 있느냐를 알려주고, size()는 실제로 원소가 몇개 들어가있는지를 알려준다. capacity이상으로 원소를 집어넣으려 할 경우 내부적으로 메모리의 재할당이 이루어진다. 재할당 크기는 약 1.5배이다. capacity가 늘어난 이후에는 원소를 삭제하더라도 capacity가 줄어들지는 않는다. vector의 원소를 얻으려할 때 []연산자와 at연산자를 사용하는 방법이 있다. []연산자는 범위검사를 하지않고, at연산자는 범위검사를 한다. 이런게 으레 그렇듯, 범위검사를 하는 at보다는 그냥 []이 조금 더 빠르긴 하다.