3. POSTECH Computer Algorithm Team
Concept
- Linked list 형식으로 구현되어 있다.
- Indexing 을 통한 access가 불가능하다.
- 원하는 위치의 iterator를 가지고 있어야 상수 시간 access가 가능하다.
STL list
4. POSTECH Computer Algorithm Team
Concept
#include <list>
std::list<int> l;
std::list<int> l = {1, 2, 3, 4}; // 초기화
std::list<std::string> l(100, “strstrstr”) // 100개의 “strstrstr”을 가진 list로 초기화
std::list<int> l(l2) // l2를 복사해서 초기화
STL list
5. POSTECH Computer Algorithm Team
Concept
- List와 마찬가지로 sequencial한 container
- Indexing을 통한 random access 가능 (따라서 탐색이 중요할 때 자주 사용됨)
- Insert/remove는 맨 뒤의 원소만 가능하며, push_back과 pop_back을 사용함
- Stack 구현에 사용될 수 있음
- STL vector 사용법만 알아 두면 STL stack을 굳이 사용할 필요가 없다.
STL vector
6. POSTECH Computer Algorithm Team
Concept
- List와 동일하게 초기화해서 사용할 수 있음
#include <vector>
std::vector<int> v;
std::vector<int> v = {1, 2, 3, 4}; // 초기화
std::vector<std::string> v(100, “strstrstr”) // 100개의 “strstrstr”을 가진 vector로 초기화
std::vector<int> v(v2) // v2를 복사해서 초기화
STL vector
7. POSTECH Computer Algorithm Team
Concept
- 큐는 FIFO(First In First Out) 의 특징을 가진다. (처음으로 Insert한 것이 처음으로 Delete된다)
- Push : 맨 뒤에 데이터를 삽입한다.
- Back : 맨 뒤의 데이터를 참조한다.
- Pop : 맨 앞의 데이터를 삭제한다.
- Front : 맨 앞의 데이터를 참조한다.
STL queue
8. POSTECH Computer Algorithm Team
Concept
#include <queue>
std::queue<int> q;
std::queue<int> q(deq) // std::deque deq를 복사해서 초기화
q = {1, 2, 3} 과 같이 초기화 할 수 없다는 점에 주의하자.
또한 iterable하지 않아서 오직 맨 앞과 맨 뒤의 원소만 참조 가능하다. (q.begin()이나 q.end() 메소드가 없다)
STL queue
9. POSTECH Computer Algorithm Team
Concept
- STL에서 스택과 큐를 합쳐놓은 듯한 deque가 존재한다.
- 앞뒤에서 삭제, 삽입, 참조를 하는 push_back, push_front, pop_back, … 등의 메소드가 있다.
- Detail이 궁금하다면 Google을 잘 활용하도록 하자.
STL deque
10. POSTECH Computer Algorithm Team
Concept
- Unique한 원소들을 담는 container
- Tree 구조로 이루어져 있어 삽입, 삭제, 탐색이 전부 O(log N) 의 시간복잡도를 가진다.
- Find : 해당 원소의 iterator를 반환
- Erase : 해당 원소를 삭제
- Insert : 원소를 set에 삽입
- Merge : 다른 set과의 union을 만들어 줌
STL set
11. POSTECH Computer Algorithm Team
Concept
- Key–value mapping을 저장하는 container
- Set과 마찬가지로 내부는 tree 구조를 가지므로 원소의 삽입, 삭제, 참조가 O(log N)의 시간복잡도를 가진다.
- m.at(key) 또는 m[key] : key에 해당하는 value 참조
- m[key] = value 또는 m.insert() :
- m.find(key) : m.at과 비슷하지만 iterator를 반환
- m.erase(key) : key-value 쌍을 map에서 제거
STL map
12. POSTECH Computer Algorithm Team
Concept
- 원소를 임의의 순서로 넣어도 꺼낼 때는 일정한 순서대로 나오도록 구현한 자료구조
- <queue>에 정의되어 있음
- Indexing 을 통한 random access가 불가능, iterable 하지도 않음
- Push : 원소를 집어넣음
- Pop : (default) 가장 큰 원소를 꺼냄
- Top : 가장 큰 원소를 참조
STL priority queue