📄 Vector
- 동적 할당되는 배열.
- 메모리 heap에 생성되며 각 원소의 메모리 주소가 연속적
- 임의 원소 접근이 빠르지만, 중간 삽입 삭제 시 메모리의 재할당 및 복사가 발생하므로 느림
#include <vector>
using namespace std;
vector<int> v;
v.push_back(1);
v.pop_back();
v.front();
v.back();
v.size();
v.capacity();
v.clear();
v.begin();
v.end();
v.erase(iterator);
v.insert(n,x);
📄 List
- 연결 구조(Node)를 가진 자료구조. 연결 리스트(Linked list)라고도 부름
- 각 원소의 메모리 주소가 비연속적
- 중간 삽입 삭제가 빠르지만, 임의 원소 접근이 불가능하므로 노드를 순회해서 접근함
#include <list>
using namespace std;
list<int> li;
li.push_back(1);
li.push_front(1);
li.insert(li.end(), 2);
li.pop_back()
list<int>::iterator it;
for (it = li.begin(); it != li.end(); it++)
{
cout << (*it) << endl;
}
li.erase(it);
📄 Stack
- 후입선출(Last-In-First-Out; LIFO) 방식
- 스택은 top에서부터 위로 쌓는 방식이고, 마찬가지로 top부터 빠진다.
- 스택에서 top을 통해 삽입하는 연산을 'push', top을 통해 삭제하는 연산을 'pop'이라고 한다.
#include <stack>
using namespace std;
stack<int> s;
s.push(1);
s.pop();
s.top();
s.size();
s.empty();
📄 Queue
- 선입선출 (First-In-First-Out; FIFO) 방식
- 큐는 들어올 때 rear로 들어오지만 나올때는 front부터 빠진다.
- 큐의 접근은 가장 첫 원소인 front와 끝 원소인 rear만 가능하다.
#include <queue>
using namespace std;
queue<int> q;
q.push(1);
q.pop();
q.front();
q.rear();
q.size();
q.empty();
📄 참고 자료