queue
수업
일부 기본 컨테이너 형식의 앞과 뒤 요소에 대한 액세스를 제한하는 기능 제한을 제공하는 템플릿 컨테이너 어댑터 클래스입니다. 요소를 뒷면에 추가하거나 전면에서 제거할 수 있으며 요소의 queue
양쪽 끝에서 요소를 검사할 수 있습니다.
구문
template <class Type, class Container = deque <Type>>
class queue
매개 변수
Type
queue
에 저장되는 요소 데이터 형식입니다.
Container
를 구현하는 데 사용되는 기본 컨테이너의 형식입니다 queue
.
설명
개체의 첫 번째 템플릿 매개 변수에 규정된 클래스 Type
의 queue
요소는 동의어 value_type
이며 두 번째 템플릿 매개 변수로 규정된 기본 컨테이너 클래스 Container
의 요소 형식과 일치해야 합니다. Type
해당 형식의 개체를 복사하고 해당 형식의 변수에 값을 할당할 수 있도록 할당할 수 있어야 합니다.
포함 deque
및 또는 , 및list
의 작업을 pop_front
push_back
back
front
지원하는 다른 시퀀스 컨테이너에 적합한 기본 컨테이너 클래스 queue
입니다. 기본 컨테이너 클래스는 제한된 시퀀스 컨테이너 멤버 함수 집합만 공용 인터페이스로 표시하는 컨테이너 어댑터 내에서 캡슐화되어 있습니다.
개체는 queue
클래스의 요소가 같음과 비교할 수 있는 경우에만 비교 가능하며, 클래스 Type
의 Type
요소가 비교할 수 없는 경우에만 비교할 수 있습니다.
C++ 표준 라이브러리에서 정의한 세 가지 유형의 컨테이너 어댑터가 있습니다. stack
queue
priority_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.