데이터를 효율적으로 저장, 접근, 수정하기 위한 그릇.
주어진 입력 데이터의 형태와 사용해야 하는 알고리즘에 따라
적절한 그릇을 선정해 사용하는 것이 좋다.
메모리의 연속 공간 에 값이 채워져 있는 형태.
배열의 값은 인덱스를 통해 참조할 수 있으며,
선언한 자료형의 값만 저장할 수 있다.
int array[10];
값과 포인터를 묶은 노드를 포인터로 연결한 형태.
Head 포인터부터 순서대로 접근해야 하므로, 접근 속도가 느리다.
#include <list>
list<int> l;
기존 배열과 같은 특징을 가지면서 배열의 단점을 보완한 동적 배열의 형태.
C++ 표준 라이브러리 (STL) 에 있는 자료구조 컨테이너 중 하나.
#include <vector>
vector<int> v;
삽입과 삭제 연산이 후입선출(LIFO : Last-in, First-out) 로 이뤄지는 형태.
삽입과 삭제가 한 쪽에서만 일어난다.
#include <stack>
stack<int> s;
top : 삽입과 삭제가 일어나는 위치
깊이 우선 탐색(DFS), 백트래킹 알고리즘에서 자주 사용된다.
삽입과 삭제 연산이 선입선출(FIFO : First in, First out) 로 이뤄지는 형태.
삽입과 삭제가 양방향에서 이뤄진다.
#include <queue>
queue<int> q;
back : 큐에서 가장 끝 데이터를 가리키는 영역
front : 큐에서 가장 앞 데이터를 가리키는 영역
너비 우선 탐색(BFS) 에서 자주 사용된다.