Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL의 queue::front()와 queue::back() 함수 완벽 가이드


이 글에서는 C++ STL에서 queue::front()queue::back() 함수의 동작 원리, 문법, 그리고 실제 예제를 통해 어떻게 활용되는지 자세히 알아보겠습니다.

C++ STL에서 큐(queue)란 무엇인가요?

큐는 C++ STL에 정의된 간단한 순차 데이터 구조로, FIFO(First In First Out, 선입선출) 방식으로 데이터를 삽입하고 삭제합니다. 큐에 저장된 데이터는 연속적인 형태로 관리되며, 새로운 요소는 항상 큐의 뒤쪽(rear)에서 삽입되고 기존 요소는 앞쪽(front)에서 제거됩니다. C++ STL에는 이미 큐의 동작 방식을 그대로 구현해 둔 템플릿이 사전 정의되어 있어, 별도의 구현 없이도 손쉽게 활용할 수 있습니다.

queue::front()란 무엇인가요?

queue::front()는 <queue> 헤더 파일에 선언된 C++ STL의 내장 함수입니다. 이 함수는 해당 큐 컨테이너에 가장 먼저 삽입된 첫 번째 요소에 대한 참조(reference)를 반환합니다. 다시 말해, front()는 큐 안에서 가장 오래된 요소를 직접 가리킵니다.

예를 들어 큐에서 head에 해당하는 1은 가장 먼저 들어간 첫 번째 요소이고, tail에 해당하는 -4는 가장 최근에 들어간 마지막 요소입니다.

문법

myqueue.front();

이 함수는 매개변수를 받지 않습니다.

반환값

큐 컨테이너에 가장 먼저 삽입된 요소에 대한 참조를 반환합니다.

예제

Input: queue<int> myqueue = {10, 20, 30, 40};
       myqueue.front();
Output:
       Front element of the queue = 10

예제 코드

#include <iostream>
#include <queue>
using namespace std;
int main(){
    queue<int> Queue;
    Queue.push(10);
    Queue.push(20);
    Queue.push(30);
    Queue.push(40);
    Queue.push(40);
    cout<<"Element in front of a queue is: "<<Queue.front();
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Element in front of a queue is: 10

queue::back()란 무엇인가요?

queue::back() 역시 <queue> 헤더 파일에 선언된 C++ STL의 내장 함수입니다. 이 함수는 해당 큐 컨테이너에 가장 마지막에 삽입된 요소에 대한 참조를 반환합니다. 즉, back()은 큐 안에서 가장 최근에 추가된 요소를 직접 가리킵니다.

문법

myqueue.back();

이 함수 역시 매개변수를 받지 않습니다.

반환값

큐 컨테이너에 가장 마지막에 삽입된 요소에 대한 참조를 반환합니다.

예제

Input: queue<int> myqueue = {10, 20, 30, 40};
       myqueue.back();
Output:
       Back element of the queue = 40

예제 코드

#include <iostream>
#include <queue>
using namespace std;
int main(){
    queue<int> Queue;
    Queue.push(10);
    Queue.push(20);
    Queue.push(30);
    Queue.push(40);
    Queue.push(50);
    cout<<"Elements at the back of the queue is: "<<Queue.back();
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Elements at the back of the queue is: 50

front()와 back()의 차이점 정리

  • front(): 큐에 가장 먼저 삽입된(가장 오래된) 요소를 반환하며, 큐의 맨 앞 위치를 가리킵니다.
  • back(): 큐에 가장 나중에 삽입된(가장 최신의) 요소를 반환하며, 큐의 맨 뒤 위치를 가리킵니다.
  • 두 함수 모두 매개변수를 받지 않으며, 상수 시간 O(1)에 실행됩니다.
  • 빈 큐(empty queue)에 대해 호출하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있으므로, 호출 전에 empty() 함수로 큐가 비어 있는지 확인하는 것이 안전합니다.