[C++] Linked List, Vector, Deque

2023. 9. 5. 03:55·IT/알고리즘

1. Linked List (#include <list>)

정의: 노드들이 메모리 상에 퍼져서 분포하며,

각 노드에는 Data와 다음 노드를 가리키는 Link로 이루어진 자료구조이다.

Index 접근이 불가능하다.

 

(C++ STL List: Double Linked List)

 

Search: O(n)

Insert: O(1)

Delete: Search + O(1)

 

장점: 삽입이 빠르다.

단점: 선형 탐색을 사용하여 탐색이 느리다. link pointer에 대한 추가 메모리가 발생한다.

 

 

 

 

 

2. Vector (#include <vector>)

정의: 크기가 변하는 동적 배열 자료구조이다. 배열의 크기가 기존보다 커지면 원래 크기의 2배씩 늘린다.

이때, 배열을 복사하여 다른 메모리에 저장하여 배열의 크기를 증가시킨다. (Dynamic Array)

연속적인 메모리 구조이며 Index 접근이 가능하다.

 

Search: O(n)

Insert: O(1) 

Delete: O(1)

 

만약 Sorted Vector를 구현한다면 이진 탐색을 사용하여 빠른 탐색을 수행할 수 있다.

대신 끝 삽입과 삭제의 시간 복잡도가 증가한다. [O(log n)]

 

장점: 끝 부분 삽입/제거가 O(1)으로 매우 빠르다. Index 접근 및 모든 순회 가능

단점: 끝이 아닌 삽입/제거는 느리다. 확장시 큰 오버헤드가 발생한다.

 

 

 

 

 

3. Deque (#include <deque>)

정의: Deque는 Vector의 단점을 보완하기 위해서 만들어진 자료구조로, 앞뒤로 Push/Pop이 가능한 자료구조이다.

 

Vector와 마찬가지로 Dynamic Array이며 Index 접근이 가능하다.

Vector와 다른 점은 불연속적인 메모리로, Chunk를 통해 관리된다.

(오버헤드 감소)

 

Search: O(n)

Insert: O(1)

Delete: O(1)

 

만약 Sorted Deque를 구현한다면 이진 탐색을 사용하여 빠른 탐색을 수행할 수 있다.

대신 시작과 끝 삽입과 삭제의 시간 복잡도가 증가한다. [O(log n)]

 

장점: 시작과 끝 부분 삽입/제거가 O(1)으로 매우 빠르다. Index 접근 및 모든 순회 가능

단점: 끝이 아닌 삽입/제거는 느리다. 불연속적 메모리 공간이라 포인터 연산은 불가능

'IT > 알고리즘' 카테고리의 다른 글

[C++] 버블 정렬 (Bubble Sort)  (0) 2023.10.22
[C++] 선택 정렬 (Selection Sort)  (0) 2023.10.22
[C++] 문자열 처리  (1) 2023.10.04
[C++] Map Container  (0) 2023.09.10
[C++] set, multiset, unordered_set  (1) 2023.09.10
'IT/알고리즘' 카테고리의 다른 글
  • [C++] 선택 정렬 (Selection Sort)
  • [C++] 문자열 처리
  • [C++] Map Container
  • [C++] set, multiset, unordered_set
게임을 제작하는 사람
게임을 제작하는 사람
안녕하세요, 게임 개발자 천냥입니다! 게임을 제작하는 개발자들에게 도움이 될만한 정보와 지식을 제공하는 블로그입니다 ;)
  • 게임을 제작하는 사람
    천냥의 게임 개발 일지
    게임을 제작하는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (87) N
      • 유니티(Unity) (56) N
        • 콘텐츠 개발 (7)
        • 툴 개발 (7) N
        • 이슈 도감 (10)
        • 최적화 기법 (4)
        • 쉐이더 (3)
        • 포톤 (0)
        • 이론 정리 (15)
        • 유용한 패키지 정리 (3)
        • 패키지: Cinemachine 정리 (7)
      • C# (2)
      • IT (29)
        • 기술 정리 (2)
        • 알고리즘 (26)
        • Git (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    클래스 이름
    최적화
    allin1spriteshader
    에디터
    sprite atlas
    시네머신
    패키지 버전 관리
    클래스 명명
    카메라
    Cinemachine
    Shader
    커스텀 패키지
    URP
    티스토리챌린지
    UI
    custom package
    끝 없는 2d 맵
    editor
    C++
    유니티
    무한 플랫포머
    addressable
    오블완
    쉐이더
    2d endless platform 구현
    openupm
    upm 개발
    Unity
    코테
    코딩 테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
게임을 제작하는 사람
[C++] Linked List, Vector, Deque
상단으로

티스토리툴바