1.1 STL 구성 요소의 인터페이스를 변경하는 구성 요소를 어댑터라 합니다.
1.2 컨테이너의 인터페이스를 변경한 stack, queue, priiority_queue 컨테이너를 컨테이너 어댑터라 합니다.
2.1 stack의 원소를 추가하는 멤버 함수는 push()입니다.
2.2 stack의 원소를 참조하는 멤버 함수는 top()입니다.
2.3 stack의 원소를 제거하는 멤버 함수는 pop()입니다.
/*
stack 컨테이너
*/
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
stack<int> st;
st.push(10);
st.push(20);
st.push(30);
while (!st.empty())
{
cout << "현재 top:" << st.top() << endl;
st.pop();
}
return 0;
}
2.4 queue의 원소를 추가하는 멤버 함수는 push()입니다.
2.5 queue의 원소를 참조하는 멤버 함수는 front()와 back()입니다.
2.6 queue의 원소를 제거하는 멤버 함수는 pop()입니다.
/*
queue 컨테이너
*/
#include <iostream>
#include <queue>
#include <list>
using namespace std;
int main(void)
{
queue<int, list<int>> q; //리스트를 사용하는 queue 생성
q.push(10);
q.push(20);
q.push(30);
while (!q.empty())
{
cout << "현재 front: "<< q.front() << "\t 현재 back: " << q.back() << endl;
q.pop();
}
return 0;
}
2.7 priority_queue는 힙 알고리즘으로 구현되므로 선택 가능한 컨테이너는 임의 접근 반복자를 지원해야합니다.
/*
priority_queue 컨테이너
*/
#include <iostream>
#include <queue>
#include <deque>
#include <functional>
using namespace std;
int main(void)
{
priority_queue<int> pq1; //기본 컨테이너 vector<int>, 기본 정렬 기준 less
pq1.push(40);
pq1.push(20);
pq1.push(30);
pq1.push(50);
pq1.push(10);
cout << "priority_queue[less]: " << endl;
while (!pq1.empty())
{
cout << pq1.top() << endl;
pq1.pop();
}
cout << "===============" << endl;
priority_queue<int, deque<int>, greater<int>> pq2;
pq2.push(40);
pq2.push(20);
pq2.push(30);
pq2.push(50);
pq2.push(10);
cout << "priority_queue[greater]: " << endl;
while (!pq2.empty())
{
cout << pq2.top() << endl;
pq2.pop();
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 뇌를 자극하는 C++ STL
'C++ > 뇌를 자극하는 C++ STL' 카테고리의 다른 글
뇌를 자극하는 C++ STL 이것만은 알고 갑시다 12장 (0) | 2018.01.19 |
---|---|
뇌를 자극하는 C++ STL 이것만은 알고 갑시다 10장 (0) | 2018.01.12 |
뇌를 자극하는 C++ STL 이것만은 알고 갑시다 9장 (0) | 2018.01.11 |
뇌를 자극하는 C++ STL 이것만은 알고 갑시다 8장 (0) | 2018.01.11 |
뇌를 자극하는 C++ STL 이것만은 알고 갑시다 7장 (0) | 2018.01.08 |