Pink Transparent Star

이외 개발 스터디/자료구조 ( Data Stucture )

[ 자료구조 ] 배열 & 리스트 & 백터

채유나 2022. 8. 24. 18:11
728x90

각 항목에 마다 자세히 설명한 것이 아닌 간략하게 정리하고자 한다.

 

배열(Array) 란?

   : 여러 데이터를 하나의 이름으로 그룹 지어 관리하기 위한 자료구조를 의미한다.

   : 연속적으로 메모리 공간이 이루져있으며 index를 통해 해당하는 원소에 접근이 가능이 가능하다. 하지만 정의와 동시에 배열의 길이가 지정되어 있어 차후에 배열의 길이를 변경하는 것은 불가능하다.

 

장점 index를 통하여 값에 바로 접근이 가능하여 검색 성능이 좋다.
연속적으로 이루어져 메모리 관리에 용의하다.
단점 데이터 삽입, 삭제 시 모든 항목의 요소들을 이동 시켜야 하기 때문에 작업 수행에 있어서 비효율적이며, 성능 저하를 일으킨다.
컴파일 이후엔 지정된 크기를 바꿀 수 없다. 이로 인해 메모리 크기를 크게 잡는 경우 메모리 낭비가 일어나며 작게 잡는 경우 크기 이상의 데이터를 저장이 불가능하다.
데이터가 삭제된 경우 빈 공간으로 남겨둬야 하여 메모리 낭비가 일어난다.

 

데이터의 크기가 정해져 있고, 추가적인 데이터 삽입 삭제가 일어나지 않을 때 사용할 경우 용이하다.

 

리스트(List) 란?

   : Linked List

   : 값과 포인터를 묶는 노드

   : * ( 포인터 )로 연결한 자료 구조

장점 데이터의 삽입, 삭제 연산 속도가 빠르다.
별도의 크기를 지정하지 않아 크기 변경에 유용하다.
단점 값을 접근하기 위해선 Head 부터 순차적으로 접근하여 검색 성능이 느리다.
포인터의 저장 공간이 필요하여 구조가 복잡하다.

 

벡터(Vector) 란? 

   : C++의 라이브러리에 있는 자료구조 컨테이너 중 하나

   : 배열과 유사하지만 배열의 단점을 보완한 동적 배열의 형태

장점

index를 통하여 값에 바로 접근이 가능하다.
동적으로 Heap에 원소를 추가 할 수 있음
맨 마지막 위치에 데이터를 삽입하거나 삭제가 빠르다.
단점 속도적인 측면에서 배열에 비해 성능이 떨어진다.
동적이라 확장 시 비용이 크다.

 

728x90