Vector 3

[C++] std::vector reserve와 resize 메소드에 대해

std::vector의 메소드 중에 reserve, resize에 대해 알아봅시다. 두 메소드는 글자가 비슷한것도 그렇고 뭔가 비슷해보이지만 많이 다릅니다. size vs capacity 두 메소드에 대해 알아보기 전에 size와 capacity의 차이에 대해 알아보겠습니다. 간단하게 설명하면 vector는 일정 크기의 배열을 할당한 뒤 push_back을 계속 해서 size가 capacity를 넘어가려고 하면 2배 크기의 배열을 만들어 이동하는 식으로 구현이 되어 있습니다. (Implementation defined. msvc에서는 1.5배씩 늘립니다) 여기서 미리 할당해놓은 배열의 크기가 capacity, 할당해놓은 배열에 들어 있는 원소의 수가 size입니다. 그림으로 표현하면 이렇게 됩니다. 1...

etc 2020.08.21

[C++] 배열, std::vector, std::array 비교

가장 기본적인 자료구조는 바로 배열입니다. 배열은 메모리에 연속적으로 배치돼 랜덤 액세스가 가능합니다. 즉 인덱스로 탐색시 시간복잡도가 O(1)입니다. C++에서 배열을 사용할 때 여러가지 선택지가 있습니다. 그냥 배열(=C-style array)을 쓸 수도 있고, std::vector, std::array를 사용할 수도 있는데 세가지 방법이 어떤 차이가 있는지, 언제 쓰면 좋은지 알아보겠습니다. 1. 배열 (C-style array) int arr1[] = {1, 2, 3}; int arr2[3] = {1, 2, 3}; int arr3[]{ 1, 2, 3 }; 배열을 선언하는법은 위와 같습니다. 배열의 크기를 대괄호 안에 넣어줘야 하는데, 선언하면서 초기화까지 하는 경우 배열 크기를 생략해도 무관합니다..

etc 2020.08.21