C++/뇌를 자극하는 C++ STL

뇌를 자극하는 C++ STL 이것만은 알고 갑시다 11장

꾸준함. 2018. 1. 19. 00:46

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

반응형