728x90
각 항목에 마다 자세히 설명한 것이 아닌 간략하게 정리하고자 한다.
배열(Array) 란?
: 여러 데이터를 하나의 이름으로 그룹 지어 관리하기 위한 자료구조를 의미한다.
: 연속적으로 메모리 공간이 이루져있으며 index를 통해 해당하는 원소에 접근이 가능이 가능하다. 하지만 정의와 동시에 배열의 길이가 지정되어 있어 차후에 배열의 길이를 변경하는 것은 불가능하다.
장점 | index를 통하여 값에 바로 접근이 가능하여 검색 성능이 좋다. |
연속적으로 이루어져 메모리 관리에 용의하다. | |
단점 | 데이터 삽입, 삭제 시 모든 항목의 요소들을 이동 시켜야 하기 때문에 작업 수행에 있어서 비효율적이며, 성능 저하를 일으킨다. |
컴파일 이후엔 지정된 크기를 바꿀 수 없다. 이로 인해 메모리 크기를 크게 잡는 경우 메모리 낭비가 일어나며 작게 잡는 경우 크기 이상의 데이터를 저장이 불가능하다. | |
데이터가 삭제된 경우 빈 공간으로 남겨둬야 하여 메모리 낭비가 일어난다. |
데이터의 크기가 정해져 있고, 추가적인 데이터 삽입 삭제가 일어나지 않을 때 사용할 경우 용이하다.
리스트(List) 란?
: Linked List
: 값과 포인터를 묶는 노드
: * ( 포인터 )로 연결한 자료 구조
장점 | 데이터의 삽입, 삭제 연산 속도가 빠르다. |
별도의 크기를 지정하지 않아 크기 변경에 유용하다. | |
단점 | 값을 접근하기 위해선 Head 부터 순차적으로 접근하여 검색 성능이 느리다. |
포인터의 저장 공간이 필요하여 구조가 복잡하다. |
벡터(Vector) 란?
: C++의 라이브러리에 있는 자료구조 컨테이너 중 하나
: 배열과 유사하지만 배열의 단점을 보완한 동적 배열의 형태
장점 |
index를 통하여 값에 바로 접근이 가능하다. |
동적으로 Heap에 원소를 추가 할 수 있음 | |
맨 마지막 위치에 데이터를 삽입하거나 삭제가 빠르다. | |
단점 | 속도적인 측면에서 배열에 비해 성능이 떨어진다. |
동적이라 확장 시 비용이 크다. |
728x90