queue 클래스queue Class

일부 기본 컨테이너 형식의 앞과 뒤 요소에 대한 액세스를 제한하는 기능 제한을 제공하는 템플릿 컨테이너 어댑터 클래스입니다.A template container adaptor class that provides a restriction of functionality for some underlying container type, limiting access to the front and back elements. 요소는 뒤에 추가하거나 앞에서 제거할 수 있으며 큐의 양쪽 끝에서 요소를 검사할 수 있습니다.Elements can be added at the back or removed from the front, and elements can be inspected at either end of the queue.

구문Syntax

template <class Type, class Container = deque <Type>>
class queue

매개 변수Parameters

입력할Type
큐에 저장되는 요소 데이터 형식입니다.The element data type to be stored in the queue

컨테이너Container
큐를 구현하는 데 사용된 기본 컨테이너의 형식입니다.The type of the underlying container used to implement the queue.

설명Remarks

TypeQueue 개체의 첫 번째 템플릿 매개 변수에서 규정 된 클래스의 요소는 value_type 와 동의어 이며, Container 두 번째 템플릿 매개 변수 규정 된 기본 컨테이너 클래스의 요소 형식과 일치 해야 합니다.The elements of class Type stipulated in the first template parameter of a queue object are synonymous with value_type and must match the type of element in the underlying container class Container stipulated by the second template parameter. 해당 Type 형식의 개체를 복사 하 고 해당 형식의 변수에 값을 할당할 수 있도록를 할당할 수 있어야 합니다.The Type must be assignable, so that it is possible to copy objects of that type and to assign values to variables of that type.

큐에 적합 한 기본 컨테이너 클래스에는 dequelist,,, 및의 작업을 지 원하는 기타 시퀀스 컨테이너가 포함 됩니다 front back push_back pop_front .Suitable underlying container classes for queue include deque and list, or any other sequence container that supports the operations of front, back, push_back, and pop_front. 기본 컨테이너 클래스는 제한된 시퀀스 컨테이너 멤버 함수 집합만 공용 인터페이스로 표시하는 컨테이너 어댑터 내에서 캡슐화되어 있습니다.The underlying container class is encapsulated within the container adaptor, which exposes only the limited set of the sequence container member functions as a public interface.

큐 개체는 클래스의 요소가 같음 비교할 수 있는 경우에만 같음 비교할 수 Type 있으며 클래스의 요소가 Type 보다 작음 비교할 수 있는 경우에만 보다 작음 비교 됩니다.The queue objects are equality comparable if and only if the elements of class Type are equality comparable, and are less-than comparable if and only if the elements of class Type are less-than comparable.

C++ 표준 라이브러리를 통해 정의되는 컨테이너 어댑터에는 stack, queue, priority_queue의 세 가지 형식이 있습니다.There are three types of container adaptors defined by the C++ Standard Library: stack, queue, and priority_queue. 각 어댑터는 일부 기본 컨테이너 클래스의 기능을 제한하여 표준 데이터 구조에 대해 정확하게 제어되는 인터페이스를 제공합니다.Each restricts the functionality of some underlying container class to provide a precisely controlled interface to a standard data structure.

  • Stack 클래스 는 LIFO (선입 last out) 데이터 구조를 지원 합니다.The stack class supports a last-in, first-out (LIFO) data structure. 쌓여 있는 접시 더미의 예로 이해할 수 있습니다.A good analogue to keep in mind would be a stack of plates. 요소(접시)는 기본 컨테이너의 끝에 있는 마지막 요소인 스택의 맨 위에서만 삽입하거나 검사하거나 제거할 수 있습니다.Elements (plates) may be inserted, inspected, or removed only from the top of the stack, which is the last element at the end of the base container. 맨 위 요소로만 액세스를 제한하는 것이 stack 클래스를 사용하는 이유입니다.The restriction to accessing only the top element is the reason for using the stack class.

  • queue 클래스는 FIFO(선입선출) 데이터 구조를 지원합니다.The queue class supports a first-in, first-out (FIFO) data structure. 은행 창구 직원을 만나려고 줄 서 있는 사람들의 예로 이해할 수 있습니다.A good analogue to keep in mind would be people lining up for a bank teller. 요소(사람)는 줄의 뒤에 추가될 수 있고 줄의 앞에서 제거됩니다.Elements (people) may be added to the back of the line and are removed from the front of the line. 줄의 앞과 뒤는 모두 검사할 수 있습니다.Both the front and the back of a line may be inspected. queue 클래스를 사용하는 이유는 이 방식으로 앞과 뒤의 요소만 액세스할 수 있기 때문입니다.The restriction to accessing only the front and back elements in this way is the reason for using the queue class.

  • priority_queue 클래스는 가장 큰 요소가 항상 최상위 위치에 있도록 요소를 정렬합니다.The priority_queue class orders its elements so that the largest element is always at the top position. 이 클래스는 요소의 삽입과 최상위 요소의 검사 및 제거를 지원합니다.It supports insertion of an element and the inspection and removal of the top element. 나이, 키 또는 기타 조건을 기준으로 정렬된 줄을 선 사람들의 예로 이해할 수 있습니다.A good analogue to keep in mind would be people lining up where they are arranged by age, height, or some other criterion.

멤버Members

생성자Constructors

속성Name 설명Description
queue 비어 있거나 기본 컨테이너 개체의 복사본인 queue을 생성합니다.Constructs a queue that is empty or that is a copy of a base container object.

TypedefsTypedefs

NameName 설명Description
container_typecontainer_type queue에서 조정할 기본 컨테이너를 제공하는 형식입니다.A type that provides the base container to be adapted by the queue.
size_typesize_type queue에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.An unsigned integer type that can represent the number of elements in a queue.
value_typevalue_type queue에 있는 요소로 저장된 개체의 형식을 나타내는 형식입니다.A type that represents the type of object stored as an element in a queue.

FunctionsFunctions

NameName 설명Description
뒤로back queue 뒤에 마지막으로 가장 최근에 추가된 요소에 대한 참조를 반환합니다.Returns a reference to the last and most recently added element at the back of the queue.
emptyempty queue이 비어 있는지를 테스트합니다.Tests if the queue is empty.
앞뒤front queue 앞의 첫 번째 요소에 대한 참조를 반환합니다.Returns a reference to the first element at the front of the queue.
창을pop queue 앞에서 요소를 제거합니다.Removes an element from the front of the queue.
pushpush queue 뒤에 요소를 추가합니다.다.Adds an element to the back of the queue.
sizesize queue에 있는 요소 수를 반환합니다.Returns the number of elements in the queue.

뒤로back

queue 뒤에 마지막으로 가장 최근에 추가된 요소에 대한 참조를 반환합니다.Returns a reference to the last and most recently added element at the back of the queue.

reference back();

const_reference back() const;

반환 값Return Value

queue의 마지막 요소입니다.The last element of the queue. queue가 비어 있으면 반환 값이 정의되지 않습니다.If the queue is empty, the return value is undefined.

설명Remarks

back의 반환 값이 const_reference에 할당된 경우 queue 개체를 수정할 수 없습니다.If the return value of back is assigned to a const_reference, the queue object cannot be modified. 의 반환 값이에 할당 된 경우에는 back reference queue 개체를 수정할 수 있습니다.If the return value of back is assigned to a reference, the queue object can be modified.

1 또는 2로 정의된 _ITERATOR_DEBUG_LEVEL을 사용하여 컴파일한 경우 빈 queue의 요소에 액세스하면 런타임 오류가 발생합니다.When compiled by using _ITERATOR_DEBUG_LEVEL defined as 1 or 2, a runtime error will occur if you attempt to access an element in an empty queue. 자세한 내용은 확인된 반복기를 참조하세요.See Checked Iterators for more information.

예제Example

// queue_back.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 11 );

   int& i = q1.back( );
   const int& ii = q1.front( );

   cout << "The integer at the back of queue q1 is " << i
        << "." << endl;
   cout << "The integer at the front of queue q1 is " << ii
        << "." << endl;
}

container_typecontainer_type

조정할 기본 컨테이너를 제공하는 형식입니다.A type that provides the base container to be adapted.

typedef Container container_type;

설명Remarks

이 형식은 템플릿 매개 변수 Container의 동의어입니다.The type is a synonym for the template parameter Container. 2개 C++ 표준 라이브러리 시퀀스 컨테이너 클래스(list 클래스 및 기본 deque 클래스)는 queue 개체의 기본 컨테이너로 사용하기 위한 요구 사항을 충족합니다.Two C++ Standard Library sequence container classes — the list class and the default deque class — meet the requirements to be used as the base container for a queue object. 이 요구 사항을 충족하는 사용자 정의 형식도 사용할 수 있습니다.User-defined types satisfying the requirements may also be used.

Container에 대한 자세한 내용은 queue 클래스 항목의 설명 섹션을 참조하세요.For more information on Container, see the Remarks section of the queue Class topic.

예제Example

container_type을 선언하고 사용하는 방법에 대한 예제는 queue의 예제를 참조하세요.See the example for queue for an example of how to declare and use container_type.

비우려면empty

queue가 비어 있는지 테스트합니다.Tests if a queue is empty.

bool empty() const;

반환 값Return Value

true 큐가 비어 있으면이 고, 그렇지 않으면입니다. false 큐가 비어 있지 않으면입니다.true if the queue is empty; false if the queue is nonempty.

예제Example

// queue_empty.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
using namespace std;

   // Declares queues with default deque base container
   queue <int> q1, q2;

   q1.push( 1 );

   if ( q1.empty( ) )
      cout << "The queue q1 is empty." << endl;
   else
      cout << "The queue q1 is not empty." << endl;

   if ( q2.empty( ) )
      cout << "The queue q2 is empty." << endl;
   else
      cout << "The queue q2 is not empty." << endl;
}
The queue q1 is not empty.
The queue q2 is empty.

앞뒤front

queue 앞의 첫 번째 요소에 대한 참조를 반환합니다.Returns a reference to the first element at the front of the queue.

reference front();

const_reference front() const;

반환 값Return Value

큐의 첫 번째 요소입니다.The first element of the queue. queue가 비어 있으면 반환 값이 정의되지 않습니다.If the queue is empty, the return value is undefined.

설명Remarks

front의 반환 값이 const_reference에 할당된 경우 queue 개체를 수정할 수 없습니다.If the return value of front is assigned to a const_reference, the queue object cannot be modified. 의 반환 값이에 할당 된 경우에는 front reference queue 개체를 수정할 수 있습니다.If the return value of front is assigned to a reference, the queue object can be modified.

멤버 함수는가 reference 비어 있지 않아야 하는 제어 되는 시퀀스의 첫 번째 요소에 대 한를 반환 합니다.The member function returns a reference to the first element of the controlled sequence, which must be nonempty.

1 또는 2로 정의된 _ITERATOR_DEBUG_LEVEL을 사용하여 컴파일한 경우 빈 queue의 요소에 액세스하면 런타임 오류가 발생합니다.When compiled by using _ITERATOR_DEBUG_LEVEL defined as 1 or 2, a runtime error will occur if you attempt to access an element in an empty queue. 자세한 내용은 확인된 반복기를 참조하세요.See Checked Iterators for more information.

예제Example

// queue_front.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main() {
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   int& ii = q1.back( );
   int& iii = q1.front( );

   cout << "The integer at the back of queue q1 is " << ii
        << "." << endl;
   cout << "The integer at the front of queue q1 is " << iii
        << "." << endl;
}

창을pop

queue 앞에서 요소를 제거합니다.Removes an element from the front of the queue.

void pop();

설명Remarks

구성원 함수를 적용하려면 queue가 비어 있지 않아야 합니다.The queue must be nonempty to apply the member function. queue의 맨 위 위치에는 가장 최근에 추가한 요소가 배치되며, 이 요소가 컨테이너 끝의 마지막 요소가 됩니다.The top of the queue is the position occupied by the most recently added element and is the last element at the end of the container.

예제Example

// queue_pop.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1, s2;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   i = q1.front( );
   cout << "The element at the front of the queue is "
        << i << "." << endl;

   q1.pop( );

   i = q1.size( );
   cout << "After a pop the queue length is "
        << i << "." << endl;

   i = q1. front ( );
   cout << "After a pop, the element at the front of the queue is "
        << i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
After a pop the queue length is 2.
After a pop, the element at the front of the queue is 20.

누르기push

queue 뒤에 요소를 추가합니다.다.Adds an element to the back of the queue.

void push(const Type& val);

매개 변수Parameters

짧은val
queue 끝에 추가되는 요소입니다.The element added to the back of the queue.

설명Remarks

queue의 뒤 위치에는 가장 최근에 추가한 요소가 배치되며, 이 요소가 컨테이너 끝의 마지막 요소가 됩니다.The back of the queue is the position occupied by the most recently added element and is the last element at the end of the container.

예제Example

// queue_push.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   i = q1.front( );
   cout << "The element at the front of the queue is "
        << i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.

queue

비어 있거나 기본 컨테이너 개체의 복사본인 queue를 생성합니다.Constructs a queue that is empty or that is a copy of a base container object.

queue();

explicit queue(const container_type& right);

매개 변수Parameters

오른쪽right
const 생성 된 큐를 복사 해야 하는 컨테이너입니다.The const container of which the constructed queue is to be a copy.

설명Remarks

queue의 기본 컨테이너는 deque입니다.The default base container for queue is deque. list는 기본 컨테이너로 지정할 수 있지만 vector는 필수 pop_front 구성원 함수를 포함하지 않으므로 기본 컨테이너로 지정할 수 없습니다.You can also specify list as a base container, but you cannot specify vector, because it lacks the required pop_front member function.

예제Example

// queue_queue.cpp
// compile with: /EHsc
#include <queue>
#include <vector>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   // Declares queue with default deque base container
   queue <char> q1;

   // Explicitly declares a queue with deque base container
   queue <char, deque<char> > q2;

   // These lines don't cause an error, even though they
   // declares a queue with a vector base container
   queue <int, vector<int> > q3;
   q3.push( 10 );
   // but the following would cause an error because vector has
   // no pop_front member function
   // q3.pop( );

   // Declares a queue with list base container
   queue <int, list<int> > q4;

   // The second member function copies elements from a container
   list<int> li1;
   li1.push_back( 1 );
   li1.push_back( 2 );
   queue <int, list<int> > q5( li1 );
   cout << "The element at the front of queue q5 is "
        << q5.front( ) << "." << endl;
   cout << "The element at the back of queue q5 is "
        << q5.back( ) << "." << endl;
}
The element at the front of queue q5 is 1.
The element at the back of queue q5 is 2.

크기가size

queue에 있는 요소 수를 반환합니다.Returns the number of elements in the queue.

size_type size() const;

반환 값Return Value

queue의 현재 길이입니다.The current length of the queue.

예제Example

// queue_size.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1, q2;
   queue <int>::size_type i;

   q1.push( 1 );
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   q1.push( 2 );
   i = q1.size( );
   cout << "The queue length is now " << i << "." << endl;
}
The queue length is 1.
The queue length is now 2.

size_typesize_type

queue에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.An unsigned integer type that can represent the number of elements in a queue.

typedef typename Container::size_type size_type;

설명Remarks

이 형식은 queue에 의해 조정되는 기본 컨테이너의 size_type과 동일한 의미입니다.The type is a synonym for the size_type of the base container adapted by the queue.

예제Example

size_type을 선언하고 사용하는 방법에 대한 예제는 queue::front의 예제를 참조하세요.See the example for queue::front for an example of how to declare and use size_type.

value_typevalue_type

queue에 있는 요소로 저장된 개체의 형식을 나타내는 형식입니다.A type that represents the type of object stored as an element in a queue.

typedef typename Container::value_type value_type;

설명Remarks

이 형식은 queue에 의해 조정되는 기본 컨테이너의 value_type과 동일한 의미입니다.The type is a synonym for the value_type of the base container adapted by the queue.

예제Example

// queue_value_type.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
using namespace std;

   // Declares queues with default deque base container
   queue<int>::value_type AnInt;

   AnInt = 69;
   cout << "The value_type is AnInt = " << AnInt << endl;

   queue<int> q1;
   q1.push(AnInt);
   cout << "The element at the front of the queue is "
        << q1.front( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the front of the queue is 69.

참고 항목See also

C + + 표준 라이브러리의 스레드 보안Thread Safety in the C++ Standard Library
C + + 표준 라이브러리 참조C++ Standard Library Reference