1. 길이의 고정 여부
배열의 경우, 정의와 동시에 길이를 지정하며 고정되어있다.
/* 정적 할당하는 경우 */
int array[3] = {0}; // 3이라는 크기를 지정했다
/* 동적 할당하는 경우 */
int array[] = new int[5]; // 마찬가지로 크기를 정해주어야한다
리스트의 경우, 사용자가 계속해서 원소를 추가하거나, 삭제하여 길이를 조절할 수 있다.
list<int> mylist; // 아직 크기 정하지 않음!
mylist.push_front(5); // 현재 크기 1
mylist.push_back(3); // 현재 크기 2
mylist.pop_front(); // 현재 크기 1
2. 중간 값 삭제 시
배열의 경우, 값을 삭제하더라도 해당 인덱스의 공간은 빈 공간으로 남아있다.
리스트의 경우, 값을 삭제하면 해당 노드가 삭제되고 앞뒤 노드가 연결되어 빈 공간이 없다.
3. 탐색 속도
배열의 경우, 인덱스를 통해 빠르게 접근할 수 있다.
리스트의 경우, 임의 접근 반복자(at(), [])는 불가능하고 양방향 반복자(++, --)를 이용해 접근하므로 비교적 느리다.
참고한 사이트
https://velog.io/@imacoolgirlyo/List%EC%99%80-Array-%EC%B0%A8%EC%9D%B4
'STL' 카테고리의 다른 글
Stack과 Queue의 차이 (0) | 2020.02.16 |
---|---|
데이터를 찾을 때 hash와 array 어떤게 더 빠를까 (0) | 2020.02.15 |
hash를 사용하는 경우 (0) | 2020.02.15 |
list와 vector의 차이 (0) | 2020.01.24 |
int array와 vector의 차이 (0) | 2020.01.24 |