반응형

C++로 코드작업을 할때 배열을 많이 사용하게 된다.

 

기본적으로 배열은 처음 선언할때 크기와 타입을 지정하게 된다.

이를 동적배열이라 한다.

 

그런데 가끔 이 배열의 크기를 임의로 늘리거나 줄이고 싶은 때가 있다.

 

어디서 뭔가 좀 들어본 사람은 "크기를 동적으로 쓰고싶은 상황이니까 동적배열을 쓰는건가?" 할 수 있겠지만

동적배열은 조금 다른 개념이다.

 

동적배열은 배열의 크기로 변수를 받아와 일정한 크기의 배열을 생성하는 것이다.

 

기본 정적배열을 선언할때에는 변수의 값이 들어가지 못하지만 동적배열을 통해 상황에 맞는

변수의 크기로 동적 메모리를 할당할 수 있게 된다.

 

하지만 지금 우리가 하고싶은 것은 배열의 크기를 필요에 따라 늘리고 줄이는 과정을 하고싶은 것이다.

 

이를 위해 보통 '리스트' 혹은 '벡터'의 개념을 많이 사용한다.

 

벡터(vector)는 내부적으로 배열의 구조를 갖고 있다.

따라서 항목이 추가되거나 삭제될 때는 내부적으로 임시 배열을 생성하여 복사한 후

항목들을 이동시키게 된다.

 

즉 쉽게  다룰 수 있으나 메모리의 문제들이 발생할 수 있게 된다.

 

이와 반대로 리스트는 포인터의 개념을 통해 메모리에 직접 접근하는 연결구조를 갖도록 구성한다.

 

즉 항목들은 포인터를 통해 연결되어 있고 항목이 삭제될 경우 연결이 끊어지는 과정을 진행하므로서

불필요한 배열의 복사과정을 없앨 수 있기에 메모리적인 측면에서 장점이 존재한다.

 

하지만 리스트의 경우 원하는 순서의 항목을 출력하거나 할 때 어려움이 발생한다.

반응형

+ Recent posts