반응형
1.stack
- 기본 컨테이너는 deque
- 템플릿 형식
- T : 원소 형식
- Conatiner : stack에 사용될 컨테이너
template<typename T,
typename Container=deque<T>>
class stack
- 멤버 형식
멤버 형식 | 내용 |
---|---|
value_type | Container::value_type, T형식 |
size_type | Container::size_type, 첨자 또는 원소 개수 등의 형식 |
container_type | Container 형식, 기본 deque |
- 생성자
explicit stack(const Container& = Container())
// 컨테이너 기본 생성자 호출해 stack을 생성하거나
//인자로 받아 stack을 생성
- 멤버 함수
bool empty() const // 원소가 없는가?
size_type size() const // 원소의 개수
void push(const vluae_type& x) // 원소 추가
void pop() // 원소 제거
value_type& top() // Top 원소의 참조
const value_type& top() const // const 객체 Top 원소 참조
- 예제
#include<stack>
stack<int> st;
st.push(10); // 원소 추가
st.push(20);
st.push(30);
while(!st.empty()){
cout<< st.top() << endl; // Top 원소 꺼내기
st.pop(); // 원소 제거
}
2. queue 컨테이너
- 기본 컨테이너는 deque
- 템플릿 형식
- T : 원소 형식
- Conatiner : queue에 사용될 컨테이너
template<typename T,
typename Container=deque<T>>
class queue
- 멤버 형식
멤버 형식 | 내용 |
---|---|
value_type | Container::value_type, T형식 |
size_type | Container::size_type, 첨자 또는 원소 개수 등의 형식 |
container_type | Container 형식, 기본 deque |
- 생성자
explicit queue(const Container& = Container())
// 컨테이너 기본 생성자 호출해 queue을 생성하거나
//인자로 받아 queue를 생성
- 멤버 함수
bool empty() const // 원소가 없는가?
size_type size() const // 원소의 개수
void push(const vluae_type& x) // 원소 추가
void pop() // 원소 제거
value_type& front() // 첫 원소 참조
value_type& back() // 마지막 원소의 참조
const value_type& front() const // const 객체 첫 원소 참조
const value_type& back() const // const 객체 마지막 원소 참조
- 예제
#include<queue>
queue<int, list<int>> q;
q.push(10); // 원소 추가
q.push(20);
q.push(30);
while(!q.empty()){
cout<< q.front() << endl; // Top 원소 꺼내기
q.pop(); // 원소 제거
}
3. priority_queue 컨테이너
들어간 순서에 상관없이 우선순위가 높은 데이터나 나옴
STL에서 priority_queue
- STL의 힙 알고리즘(make_heap, push_heap, pop_heap)을 사용해 구현
- 임의 접근 반복자를 제공해야함(vector 또는 deque)
기본 컨테이너는 vector
템플릿 형식
- T : 원소 형식
- Conatiner : priority_queue에 사용될 컨테이너, 기본 vector
- Comp : 우선순위를 결정할 정렬 기준, 기본 less
template<typename T,
typename Container=deque<T>,
typename Comp=less<typename Container::value_type>>
class priority_queue
- 멤버 형식
멤버 형식 | 내용 |
---|---|
value_type | Container::value_type, T형식 |
size_type | Container::size_type, 첨자 또는 원소 개수 등의 형식 |
container_type | Container 형식, 기본 vector |
- 생성자
explicit priority_queue(
const Comp& = Comp(),
const Container& = Container())
// 컨테이너 기본 생성자 호출해 queue을 생성하거나
//인자로 받아 priority_queue를 생성
- 멤버 함수
bool empty() const // 원소가 없는가?
size_type size() const // 원소의 개수
void push(const vluae_type& x) // 원소 추가
void pop() // 원소 제거
value_type& top() // Top 원소의 참조
const value_type& top() const // const 객체 Top 원소 참조
- 예제
#include<queue>
priority_queue<int> pq1;
pq1.push(40); // 원소 추가
pq1.push(20);
pq1.push(30);
pq1.push(50);
pq1.push(10);
while(!pq1.empty()){
cout<< pq1.top() << endl; // Top 원소 꺼내기
// 50 40 30 20 10 (less)
pq1.pop(); // 원소 제거
}
priority_queue<int, deque<int>, greater<int>> pq2;
pq2.push(40); // 원소 추가
pq2.push(20);
pq2.push(30);
pq2.push(50);
pq2.push(10);
while(!pq2.empty()){
cout<< pq2.top() << endl; // Top 원소 꺼내기
// 10 20 30 40 50 (greater)
pq2.pop(); // 원소 제거
}
참고
- 뇌를 자극하는 C++ STL
반응형
'C++ > STL' 카테고리의 다른 글
[STL-19] string (0) | 2021.03.14 |
---|---|
[STL-17] 반복자 (0) | 2021.03.14 |
[STL-16] 함수 객체 - 함수 어댑터 (0) | 2021.03.14 |
[STL-15] 함수 객체 - 비교/논리 연산 조건자 (0) | 2021.03.14 |
[STL-14] 함수 객체 - 산술 연산 함수 객체 (0) | 2021.03.14 |