본문 바로가기

STL

int array와 list의 차이

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

https://wayhome25.github.io/cs/2017/04/17/cs-18-1/

'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