본문 바로가기

알고리즘/자료구조

내장 라이브러리가 있는 자료 구조

C++은 프로그램에 필요한 자료구조와 알고리즘을 STL(Standard Template Library)로서 제공합니다.

 

이 글에서는 C++ STL에 내장된 자료구조가 어떤 것들이 있는지 간단하게 언급하고 넘어가려고 합니다.

 

기본적인 자료구조 자체에 대한 설명은 하지 않습니다.

 

 

1. 정적 배열 (array)

 

1
2
3
4
5
6
7
8
#include <array>
using namespace std;
 
int main()
{
    int a[100]; // 정적 배열
    array <int100> b; // 함수로 전달할 때 포인터 형 변환이 되지 않는 정적 배열
}
 

2. 동적 배열 (vector)

 

1
2
3
4
5
6
7
#include <vector>
using namespace std;
 
int main()
{
    vector <int> vec; // 동적 배열
}

3. bool형 정적 배열 (bitset)

 

1
2
3
4
5
6
7
#include <bitset>
using namespace std;
 
int main()
{
    bitset <100> bs; // bool형 정적 배열
}
 

bool형 배열에 추후 설명할 비트연산을 할 수 있는 자료구조 입니다.


4. 스택 (stack)

 

1
2
3
4
5
6
7
#include <stack>
using namespace std;
 
int main()
{
    stack <int> stk; // 스택
}

보통 스택이 필요한 경우는 스택의 기능을 다 가지고 있고 인덱스 접근도 가능한 vector을 사용하게 됩니다.


5. 큐 (queue)

 

1
2
3
4
5
6
7
#include <queue>
using namespace std;
 
int main()
{
    queue <int> q; // 큐
}

6. 덱 (deque)

 

1
2
3
4
5
6
7
#include <deque>
using namespace std;
 
int main()
{
    deque <int> dq; // 덱
}

7. 이중 연결 리스트 (list)

 

1
2
3
4
5
6
7
#include <list>
using namespace std;
 
int main()
{
    list <int> ls; // 이중 연결 리스트
}

8. 균형 이진 탐색 트리 (set, map, multiset, multimap)

 

1
2
3
4
5
6
7
8
9
10
11
#include <set>
#include <map>
using namespace std;
 
int main()
{
    set <int> st; // key only BBST
    multiset <int> ms; // 중복 가능 key only BBST
    map <intint> mp; // key-value BBST
    multimap <intint> mm; // 중복 가능 key-value BBST
}
 
 

9. 힙 (priority_queue)

 

1
2
3
4
5
6
7
#include <queue>
using namespace std;
 
int main()
{
    priority_queue <int> pq; // 힙
}
 
 

10. 해시 테이블 (unordered_set, unordered_map, unordered_multiset, unordered_multimap)

 

1
2
3
4
5
6
7
8
9
10
11
#include <unordered_set>
#include <unordered_map>
using namespace std;
 
int main()
{
    unordered_set <int> us; // key only Hash Table
    unordered_multiset <int> ums; // 중복 가능 key only Hash Table
    unordered_map <intint> um; // key-value Hash Table
    unordered_multimap <intint> umm; // 중복 가능 key-value Hash Table
}
 
 

일반적으로 같은 작업을 할 수 있는 균형 이진 탐색 트리에 비해 평균적인 속도가 빠르지만, 최악의 경우는 더 느리기 때문에 PS에서는 잘 쓰이지 않습니다.

 

'알고리즘 > 자료구조' 카테고리의 다른 글

세그먼트 트리 응용  (0) 2021.08.02
세그먼트 트리 with Lazy propagation  (1) 2020.06.01
세그먼트 트리  (0) 2020.05.15
유니온 파인드 (Union-Find)  (0) 2020.05.04