벡터는 일반적인 배열처럼 개체들을 연속적인 메모리 공간에 저장한다.
때문에 iterator뿐만 아니라 position index([])로도 접근이 가능하다.
동적으로 확장/축소가 가능한 동적 배열로 구현되어있다.
장점
개별 원소들 접근 가능
원소를 마지막에 삽입하는 것이 빠름
랜덤으로 원소 순회 가능
개별 원소에 대한 접근 속도 빠름
단점
컨테이너 끝이 아닌 곳에 삽입/제거시 성능 저하
동적이라 확장/축소가 용이하나 확장시 비용이 크다
리스트는 double linked list로 구현되어있다.
삽입/삭제가 자주 발생하는 경우에 용이하다. 비연속적으로 메모리가 할당되며, 메모리 선할당을 하지 않는다. 리스트 안의 각 요소는 이후와 이전의 요소를 가리키는 포인터를 저장하는 추가 공간이 필요하다.
장점
컨테이너 어느 위치에서라도 삽입/제거 빠름
원소들의 컨테이너 내 이동 빠름
단점
원소의 인덱스로 직접 접근 불가
원소에 랜덤 접근할 수 없기 때문에 특정한 요소에서 얻는 비용이 비싸다.
특정 원소에 접근하려면 처음이나 끝부터 선형 탐색해야함
컨테이너 내 순회가 forward/reverse만 가능하여 느림
원소간 상호 연결 정보를 위해 추가적 메모리 비용 발생
원소 배열이 필요할 경우, 새로운 배열을 만들어 해당 원소들을 추가해야 한다.
https://chanheess.tistory.com/154
https://loadofprogrammer.tistory.com/76