list와 vector 차이점

Su-hyeon B·2022년 10월 5일
0
post-custom-banner

Vector

벡터는 일반적인 배열처럼 개체들을 연속적인 메모리 공간에 저장한다.
때문에 iterator뿐만 아니라 position index([])로도 접근이 가능하다.
동적으로 확장/축소가 가능한 동적 배열로 구현되어있다.

장점

  • 개별 원소들 접근 가능

  • 원소를 마지막에 삽입하는 것이 빠름

  • 랜덤으로 원소 순회 가능

  • 개별 원소에 대한 접근 속도 빠름

    단점

  • 컨테이너 끝이 아닌 곳에 삽입/제거시 성능 저하

  • 동적이라 확장/축소가 용이하나 확장시 비용이 크다

List

리스트는 double linked list로 구현되어있다.
삽입/삭제가 자주 발생하는 경우에 용이하다. 비연속적으로 메모리가 할당되며, 메모리 선할당을 하지 않는다. 리스트 안의 각 요소는 이후와 이전의 요소를 가리키는 포인터를 저장하는 추가 공간이 필요하다.

장점

  • 컨테이너 어느 위치에서라도 삽입/제거 빠름

  • 원소들의 컨테이너 내 이동 빠름

    단점

  • 원소의 인덱스로 직접 접근 불가

  • 원소에 랜덤 접근할 수 없기 때문에 특정한 요소에서 얻는 비용이 비싸다.

  • 특정 원소에 접근하려면 처음이나 끝부터 선형 탐색해야함

  • 컨테이너 내 순회가 forward/reverse만 가능하여 느림

  • 원소간 상호 연결 정보를 위해 추가적 메모리 비용 발생

  • 원소 배열이 필요할 경우, 새로운 배열을 만들어 해당 원소들을 추가해야 한다.

참고

https://chanheess.tistory.com/154
https://loadofprogrammer.tistory.com/76

profile
ML/AI Engineer
post-custom-banner

0개의 댓글