rueki

C++ STL 큐(QUEUE) 본문

C,C++ 기초 및 자료구조

C++ STL 큐(QUEUE)

륵기 2020. 3. 12. 18:19
728x90
반응형

C++에서 Queue 역시 선언해서 사용할 수가 있다.

 

- Push

#include <iostream>       
#include <queue>      
using namespace std;
int main()
{
    queue<int> myqueue;
    int myint;

    cout << "정수를 입력하세요.(0:종료)" << '\n';
    do
    {
        cin >> myint;
        myqueue.push(myint);
    } while (myint);

    cout << "Queue 안에 있는 것 :";
    while (!myqueue.empty())
    {
        cout << myqueue.front()<<' ';
        myqueue.pop();
    }
    cout << '\n';


    return 0;
}

큐안에 원소들을 push하고 큐가 빈 상태가 될 때까지 큐의 맨 앞의 원소들을 읽고 pop을 하는 코드이다.

큐는 선입선출 구조이기 때문에, 먼저 들어온 순대로 먼저 값을 빼낼 수가 있다.

1,2,3,4,5 순대로 push를 하고 pop을 할때도 1 2 3 4 5 순으로 꺼내지게 된다.

 

- Size

큐의 크기를 알 수 있는 함수이다.

#include <iostream>       
#include <queue>      
using namespace std;
int main()
{
    queue<int> myqueue;
    
    cout << "0. size : " << myqueue.size() << '\n';

    for (int i = 0; i < 5; i++)myqueue.push(i);
    cout << "1. size : " << myqueue.size()<<'\n';
    

    myqueue.pop();
    cout << "2. size : " << myqueue.size() << '\n';

    return 0;
}

큐를 생성하고는 빈 큐이기 때문에 크기가 0이다.

0부터 4까지 큐에 넣은 후에는 큐의 크기는 5가 되고 원소 하나를 pop 했으니, 크기는 4가 된다.

 

- Swap

두 개의 큐 내부 원소들을 바꿀 수 있는 함수이다.

#include <iostream>       
#include <queue>      
using namespace std;
int main()
{
    queue<int> myqueue;
    queue<int> myqueue2;
    
    for (int i = 0; i < 5; i++)
        myqueue.push(i);

    for (int j = 6; j <= 10; j++)
        myqueue2.push(j);

    myqueue.swap(myqueue2);

    for (int i = 0; i < 5; i++) {
        cout << myqueue.front()<<' ';
        myqueue.pop();
    }
    cout << '\n';

    for (int i = 0; i < 5; i++) {
        cout << myqueue2.front()<<' ';
        myqueue2.pop();
    }


    return 0;
}

myqueue 에 0,1,2,3,4 입력, myqueue2에 6,7,8,9,10 입력 후 swap을 통해

원소가 서로 바뀐 것을 확인할 수가 있다.

728x90
반응형

'C,C++ 기초 및 자료구조' 카테고리의 다른 글

6. 선택 정렬 (Selection Sort)  (0) 2020.03.25
5. 버블 정렬 (Bubble Sort)  (0) 2020.03.21
3.1 C++ STL 스택  (0) 2020.03.11
4. 큐 (Queue)  (0) 2020.03.08
3. 스택  (0) 2020.03.05
Comments