queue 類別

範本容器配接器類別,它針對某些基礎容器類型提供功能限制,限制存取前端和後端的項目。 元素可以加入後端或從前面移除,而且元素可以在 的任一端 queue 檢查。

語法

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

參數

Type
要存放在 queue 中的項目資料類型。

Container
用來實作 的基礎容器型別 queue

備註

物件第一個 queue 樣板參數中規定之類別 Type 的元素與 同義 value_type ,而且必須符合第二個樣板參數所規定之基礎容器類別 Container 中的元素類型。 Type必須可指派,才能複製該型別的物件,並將值指派給該類型的變數。

適用于 包含 deque 和 的適用基礎容器類別 queue ,或支援 、 backpush_backpop_front 作業 front 的任何其他序列 list 容器。 基礎容器類別會封裝在容器介面卡內,它只會公開有限的序列容器成員函式集做為公用的介面。

queue如果 和 類別的元素相等可比較,而且只有在類別 Type 的元素相等可比較時,而且只有在 類別的 Type 元素小於可比較時,物件才會相等。

C++ 標準程式庫定義了三種類型的容器配接器: stackqueuepriority_queue 。 每個類型都會限制某些基礎容器類別的功能,以精確地提供標準資料結構受控制的介面。

  • 類別 stack 支援最後一個先出 (LIFO) 資料結構。 記住的一個很好的類比是一堆盤子。 項目 (盤子) 可能會插入、檢查,或只從堆疊頂端移除,這是基底容器尾端的最後一個項目。 只存取 top 元素的限制是使用 stack 類別的原因。

  • 類別 queue 支援先進先出 (FIFO) 資料結構。 記住的一個很好的類比是人們排隊為銀行出納員。 項目 (人) 可能會加入隊伍的尾端,以及從隊伍的前面移除。 隊伍的前端和後端都可能會進行檢查。 以這種方式只 front 存取 和 back 元素的限制是使用 queue 類別的原因。

  • 類別 priority_queue 會排序其元素,讓最大元素一律位於頂端位置。 它支援插入項目,以及檢查和移除頂端項目。 記住的一個很好的類比是人們排隊,他們按年齡、身高或其他標準排列。

成員

建構函式

名稱 描述
queue 建構空的,或是基底容器物件複本的 queue

Typedefs

名稱 描述
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;

傳回值

的最後一 queue 個專案。 queue如果 是空的,則傳回值是未定義的。

備註

如果將 的 back 傳回值指派給 const_referencequeue 則無法修改 物件。 如果 的傳回值 back 指派給 referencequeue 則可以修改 物件。

使用 _ITERATOR_DEBUG_LEVEL 定義為 1 或 2 進行編譯時,如果您嘗試存取空 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的同義字。 兩個 C++ 標準程式庫序列容器類別—類別 list 和預設 deque 類別—符合做為物件基底容器 queue 的需求。 也可以使用滿足該要求的使用者定義類型。

如需 的詳細資訊 Container ,請參閱主題的 queue Class 一節。

範例

如需如何宣告和使用 container_type 的範例 queue ,請參閱範例。

empty

測試 queue 是否為空白。

bool empty() const;

傳回值

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;

傳回值

的第一個專案 queuequeue如果 是空的,則傳回值是未定義的。

備註

如果將 的 front 傳回值指派給 const_referencequeue 則無法修改 物件。 如果 的傳回值 front 指派給 referencequeue 則可以修改 物件。

成員函式會將 reference 傳回至受控制序列的第一個專案,該元素必須是非空的。

使用 _ITERATOR_DEBUG_LEVEL 定義為 1 或 2 進行編譯時,如果您嘗試存取空 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
constqueue 的容器是複本。

備註

的預設基底容器 queuedeque 。 您也可以將 指定 list 為基底容器,但無法指定 vector ,因為它缺少必要的 pop_front 成員函式。

範例

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

傳回值

的目前長度 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++ 標準程式庫參考