내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다.
1) 11장. 컨테이너 어댑터
컨테이너 어댑터는 다른 컨테이너의 인터페이스를 변경한 컨테이너 이다. STL에는 stack, queue, priority_queue 3가지 컨테이너 어댑터가 있다.
stack
stack 어댑터를 적용시킬 컨테이너는 empty(), push_back(), pop_back(), back(), size() 인터페이스를 지원해야한다.
따라서 이러한 인터페이스를 제공하는 vector, deque, list는 어댑터를 적용시켜 stack으로 사용할 수 있다.
다음 코드를 통하여 확인해 보자,
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main()
{
stack<int, vector<int>> st;
st.push(1);
st.push(2);
st.push(3);
while (!st.empty())
{
cout << st.top() << endl;
st.pop();
}
return 0;
}
결과로는 다음과 같다.
참고로 나는 vector를 사용하여 stack을 만들었는데, 지정해주지 않을경우 deque가 기본값으로 사용된다.
queue
queue또한 위의 stack처럼 어댑터를 적용시킬 컨테이너가 empty(), push_back(), pop_front(), back(), size() 인터페이스를 지원해야한다. 따라서 vector는 사용할수가 없다.
queue의 주요 인터페이스는 원소를 추가하는 push(), 원소를 제거하는 pop(), 첫 원소를 참조하는 front()가 있다.
priority_queue
우선순위 큐는 내부적으로 STL의 heap알고리즘을 통하여 구현돼 있다. 또한 컨테이너 템플릿 인자로 받을 컨테이너는 임의접근반복자 를 제공하는 vector와 deque를 사용할 수 있다. 또한, empty(), push_back(), pop_back(), front(), size() 인터페이스를 지원해야한다.
다음 코드를 통해 확인해 보자.
#include <iostream>
#include <queue>
#include <deque>
using namespace std;
int main()
{
priority_queue<int, deque<int>, greater<int>> priq;
priq.push(10);
priq.push(30);
priq.push(20);
priq.push(40);
cout << "priority_queue : " << endl;
while (!priq.empty())
{
cout << priq.top() << endl;
priq.pop();
}
return 0;
}
결과는 다음과 같다.
2) 나의 현황
후다닥 이책 끝내보자!!
이글의 모든 사진과 내용의 출처는 공동환 님께 있습니다.
'CS > C++' 카테고리의 다른 글
CLion bits/stdc++ 헤더 [M1 맥북] (6) | 2022.01.26 |
---|---|
뇌를 자극하는 C++ STL : 12장. string 컨테이너 (0) | 2022.01.18 |
뇌를 자극하는 C++ STL : 10장. 반복자 (0) | 2022.01.18 |
뇌를 자극하는 C++ STL : 9장. 함수 객체 (0) | 2022.01.18 |
뇌를 자극하는 C++ STL : 8장. 알고리즘 (0) | 2022.01.18 |
댓글