본문 바로가기

Coding/궁금한 것들

배열 vs 벡터, 누가 더 좋을까?

 c++로 문제를 풀면서 배열 대신 벡터를 최대한 사용하려고 했다. 둘의 차이점은 무엇일까?

둘의 큰 차이점이라고 하면 정적인 것과 동적인 것이라고 할 수 있다. 배열은 사용하기 전에 공간을 먼저 정의하고 사용하기 때문에 불필요한  공간을 메모리 위에 올려야한다. 하지만 벡터같은 경우 필요한 만큼의 공간을 정의하기 때문에 메모리를 절약할 수 있다. 

 

 1. 벡터의 경우 서로 다른 타입을 갖도록 선언할 수 있다. (ex, vector<pair<int,char>> vec;)

 2. 벡터는 배열보다 메모리 공간을 더 차지 한다.

 3. 벡터(Template 클래스), 배열(메모리 공간)

 4. 배열은 인덱스 기반이지만 벡터는 인덱스 기반이 아니다.

 5. 벡터는 추가적으로 요소들을 삽입하거나 삭제할 수 있지만 배열은 불가능하다.

 6. 배열은 선형 구조이며 요소들에 직접 접근, 순차적 접근이 가능하다.

 7. 벡터의 경우 포인터로 요소에 접근하기 때문에 배열에 비해 속도가 느리다. 

 8. 벡터의 경우 메모리 블록에 연속적으로 요소들이 저장되어있기 때문에 iterator를 사용해서 쉽게 살펴볼 수 있다.

 

 상황에 맞게 벡터와 배열을 사용하면 될 것 같다. 둘 다 써보면서 연습해보는것도 나쁘지 않을듯.

'Coding > 궁금한 것들' 카테고리의 다른 글

문자셋의 종류  (0) 2019.12.19
아스키 코드와 유니 코드  (0) 2019.12.19
'\n' vs endl  (0) 2019.12.11
c++ 띄어쓰기를 포함한 문자열 입력  (0) 2019.10.16
using namespace std를 쓰면 안되는 이유?  (0) 2019.10.15