ㅇ 큐
- FIFO 구조
- 자료를 관리하는 기본적인 기능은 시퀸스의 것을 그대로 재사용할수있다.
- FIFO 원리대로 동작하기 위해 꼭 필요한 인터페이스는 4가지만 있다.
push, pop : 앞뒤에서 값을 추가하거나 제거한다.
front, back : 앞뒤의 값을 읽는다.
- 앞의 4개의 주요 함수와 size, empty 그리고 생성자가 큐의 함수 전부이다.
- 스텍과 만찬가지로 pop은 값을 제거하기만 하면 리턴하지 않으므로 front, back으로 값을 따로 읽어야 한다.
- 큐의 템플릿 선언 다음과 같다.
1 template < class T, class Cont = deque<T> >
2 class queue { ... }
3
4 #include <iostream>
5 #include <queue>
6
7 using namespace std;
8
9 void main()
10 {
11 queue<int> q;
12
13 q.push(1);
14 q.push(2);
15 q.push(3);
16
17 while (!q.empty()) {
18 cout << q.front() << endl;
19 q.pop();
20 }
21 }
ㅇ 우선순위 큐
- 우선 순위는 벡터와 유사하되 값을 빼 낼 때 가장 큰 값을 리턴한다는 점이 다르다.
- 필요한 동작은 push, pop, top 세가지 밖에 없다. 템플릿 선언 다음과 같다.
template<class T, class Cont = vector<T>, class BinPred = less<Cont::value_type> >
class priority_queue { ... }
- T는 우선 순위 큐에 저장될 타입이고 Cont는 기본 컨테이너이되 디폴트는 벡터로 되어 있다.
- 원할 경우 데크로 변경할 수 있지만 임의 접근이 안되는 리스트는 쓸 수 없다.
- BinPred는 값의 비교에 사용할 비교 함수 객체이되 디폴트는 less로 되어 있으므로 큰값이 가장 먼저 나온다.
- 생성자
explicit priority_queue(const BinPred& pr = BinPred());
priority_queue(const value_type *first, const value_type *last, const BinPred& pr = BinPred());
- 비어 있는 채로 생성할 수 있고 반복자 구간으로 다른 컨테이너에 있는 값을 채울 수도 있다.
1
2 #include <iostream>
3 #include <queue>
4
5 using namespace std;
6
7 void main()
8 {
9 priority_queue<int> q;
10
11 q.push(1);
12 q.push(3);
13 q.push(2);
14
15 while (!q.empty()) {
16 cout << q.top() << endl;
17 q.pop();
18 }
19 }
ps : 출처 및 자세한 내용은 www.WinAPI.co.kr 참고
'[ C/ C++ 프로그래밍 ] > [ STL ]' 카테고리의 다른 글
[ 혼연 정리 ] STL 알고리즘 - 2 [ 읽기 알고리즘 ] (0) | 2010.06.24 |
---|---|
[ 혼연 정리 ] STL 알고리즘 - 1 [ 읽기 알고리즘 ] (2) | 2010.06.24 |
[ 혼연 정리 ] 연관 컨테이너 - 8 [ 컨테이너 어댑터 ] (0) | 2010.06.24 |
[ 혼연 정리 ] 연관 컨테이너 - 7 [ 맵 ] (0) | 2010.06.24 |
[ 혼연 정리 ] 연관 컨테이너 - 6 [ 맵 ] (0) | 2010.06.24 |