다음을 통해 공유


queue 수업

일부 기본 컨테이너 형식의 앞과 뒤 요소에 대한 액세스를 제한하는 기능 제한을 제공하는 템플릿 컨테이너 어댑터 클래스입니다. 요소를 뒷면에 추가하거나 전면에서 제거할 수 있으며 요소의 queue양쪽 끝에서 요소를 검사할 수 있습니다.

구문

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

매개 변수

Type
queue에 저장되는 요소 데이터 형식입니다.

Container
를 구현하는 데 사용되는 기본 컨테이너의 형식입니다 queue.

설명

개체의 첫 번째 템플릿 매개 변수에 규정된 클래스 Typequeue 요소는 동의어 value_type 이며 두 번째 템플릿 매개 변수로 규정된 기본 컨테이너 클래스 Container 의 요소 형식과 일치해야 합니다. Type 해당 형식의 개체를 복사하고 해당 형식의 변수에 값을 할당할 수 있도록 할당할 수 있어야 합니다.

포함 deque 및 또는 , 및list의 작업을 pop_frontpush_backbackfront지원하는 다른 시퀀스 컨테이너에 적합한 기본 컨테이너 클래스 queue 입니다. 기본 컨테이너 클래스는 제한된 시퀀스 컨테이너 멤버 함수 집합만 공용 인터페이스로 표시하는 컨테이너 어댑터 내에서 캡슐화되어 있습니다.

개체는 queue 클래스의 요소가 같음과 비교할 수 있는 경우에만 비교 가능하며, 클래스 TypeType 요소가 비교할 수 없는 경우에만 비교할 수 있습니다.

C++ 표준 라이브러리에서 정의한 세 가지 유형의 컨테이너 어댑터가 있습니다. stackqueuepriority_queue 각 어댑터는 일부 기본 컨테이너 클래스의 기능을 제한하여 표준 데이터 구조에 대해 정확하게 제어되는 인터페이스를 제공합니다.

  • 이 클래스stack LIFO(Last-in, first-out) 데이터 구조를 지원합니다. 염두에 두어야 할 좋은 아날로그는 접시 더미가 될 것입니다. 요소(접시)는 기본 컨테이너의 끝에 있는 마지막 요소인 스택의 맨 위에서만 삽입하거나 검사하거나 제거할 수 있습니다. 상위 요소에만 액세스하는 제한은 클래스를 사용하는 stack 이유입니다.

  • 이 클래스는 queue FIFO(선점) 데이터 구조를 지원합니다. 명심해야 할 좋은 아날로그는 은행 출고자를 위해 줄을 서있는 사람들이 될 것입니다. 요소(사람)는 줄의 뒤에 추가될 수 있고 줄의 앞에서 제거됩니다. 줄의 앞과 뒤는 모두 검사할 수 있습니다. 이러한 방식으로 요소 및 back 요소에만 front 액세스하는 제한은 클래스를 queue 사용하는 이유입니다.

  • 클래스priority_queue 가장 큰 요소가 항상 맨 위 위치에 있도록 해당 요소를 정렬합니다. 이 클래스는 요소의 삽입과 최상위 요소의 검사 및 제거를 지원합니다. 명심해야 할 좋은 아날로그는 나이, 높이 또는 기타 기준에 따라 정렬되는 곳에 줄지어 서있는 사람들이 될 것입니다.

멤버

생성자

속성 설명
queue 비어 있거나 기본 컨테이너 개체의 복사본인 queue을 생성합니다.

Typedef

속성 설명
container_type queue에서 조정할 기본 컨테이너를 제공하는 형식입니다.
size_type queue에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.
value_type queue에 있는 요소로 저장된 개체의 형식을 나타내는 형식입니다.

함수

속성 설명
back queue 뒤에 마지막으로 가장 최근에 추가된 요소에 대한 참조를 반환합니다.
empty queue이 비어 있는지를 테스트합니다.
front queue 앞의 첫 번째 요소에 대한 참조를 반환합니다.
pop queue 앞에서 요소를 제거합니다.
push queue 뒤에 요소를 추가합니다.다.
size queue에 있는 요소 수를 반환합니다.

back

queue 뒤에 마지막으로 가장 최근에 추가된 요소에 대한 참조를 반환합니다.

reference back();

const_reference back() const;

Return Value

의 마지막 요소입니다 queue. queue 비어 있으면 반환 값이 정의되지 않습니다.

설명

반환 값 back 이 할당 const_reference된 경우 개체를 queue 수정할 수 없습니다. 반환 값 back 이 할당 reference된 경우 개체를 queue 수정할 수 있습니다.

1 또는 2로 정의된 값을 사용하여 _ITERATOR_DEBUG_LEVEL 컴파일하는 경우 빈 queue요소에 액세스하려고 하면 런타임 오류가 발생합니다. 자세한 내용은 Checked Iterators 를 참조하세요.

예시

// 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_type

조정할 기본 컨테이너를 제공하는 형식입니다.

typedef Container container_type;

설명

이 형식은 템플릿 매개 변수 Container의 동의어입니다. 클래스와 기본 deque 클래스인 list 두 개의 C++ 표준 라이브러리 시퀀스 컨테이너 클래스는 개체의 기본 컨테이너 queue 로 사용할 요구 사항을 충족합니다. 이 요구 사항을 충족하는 사용자 정의 형식도 사용할 수 있습니다.

자세한 Container내용은 항목의 설명 섹션을 queue Class 참조하세요.

예시

선언하고 사용하는 container_type방법에 대한 queue 예제는 예제를 참조하세요.

empty

queue가 비어 있는지 여부를 테스트합니다.

bool empty() const;

Return Value

true비어 queue 있으면 이고, false 비어 있지 않으면 queue

예시

// 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 앞의 첫 번째 요소에 대한 참조를 반환합니다.

reference front();

const_reference front() const;

Return Value

의 첫 번째 요소입니다 queue. queue 비어 있으면 반환 값이 정의되지 않습니다.

설명

반환 값 front 이 할당 const_reference된 경우 개체를 queue 수정할 수 없습니다. 반환 값 front 이 할당 reference된 경우 개체를 queue 수정할 수 있습니다.

멤버 함수는 제어되는 시퀀스의 첫 번째 요소로 반환 reference 하며, 이 요소는 비어 있지 않아야 합니다.

1 또는 2로 정의된 값을 사용하여 _ITERATOR_DEBUG_LEVEL 컴파일하는 경우 빈 queue요소에 액세스하려고 하면 런타임 오류가 발생합니다. 자세한 내용은 Checked Iterators 를 참조하세요.

예시

// 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 앞에서 요소를 제거합니다.

void pop();

설명

queue 멤버 함수를 적용하려면 비어 있지 않아야 합니다. 맨 위 queue 는 가장 최근에 추가된 요소가 차지하는 위치이며 컨테이너의 끝에 있는 마지막 요소입니다.

예시

// 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 뒤에 요소를 추가합니다.다.

void push(const Type& val);

매개 변수

val
의 뒷면에 추가된 요소입니다 queue.

설명

뒷면 queue 은 가장 최근에 추가된 요소가 차지하는 위치이며 컨테이너의 끝에 있는 마지막 요소입니다.

예시

// 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을 생성합니다.

queue();

explicit queue(const container_type& right);

매개 변수

right
const 생성된 queue 컨테이너는 복사본입니다.

설명

기본 기본 컨테이너 queue 는 .입니다 deque. 기본 컨테이너로 지정할 list 수도 있지만 필요한 pop_front 멤버 함수가 없기 때문에 지정할 vector수 없습니다.

예시

// 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에 있는 요소 수를 반환합니다.

size_type size() const;

Return Value

의 현재 길이입니다 queue.

예시

// 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_type

queue에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.

typedef typename Container::size_type size_type;

설명

형식은 에 의해 queue조정된 기본 컨테이너의 동의어 size_type 입니다.

예시

선언하고 사용하는 size_type방법에 대한 queue::front 예제는 예제를 참조하세요.

value_type

queue에 있는 요소로 저장된 개체의 형식을 나타내는 형식입니다.

typedef typename Container::value_type value_type;

설명

형식은 에 의해 queue조정된 기본 컨테이너의 동의어 value_type 입니다.

예시

// 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.

참고 항목

C++ 표준 라이브러리의 스레드 보안
C++ 표준 라이브러리 참조