queue 類別

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

語法

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

參數

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

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

備註

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

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

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

C++標準連結庫定義了三種類型的容器配接器: stack、 queue和 priority_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_reference, queue 則無法修改 物件。 如果 的傳回值 back 指派給 reference, queue 則可以修改 物件。

使用 _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;

傳回值

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

備註

如果將 的 front 傳回值指派給 const_reference, queue 則無法修改 物件。 如果 的傳回值 front 指派給 reference, queue 則可以修改 物件。

成員函式會將 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
建 const 構 queue 的容器是複本。

備註

預設基底容器 queue 是 deque。 您也可以將 指定 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++ 標準程式庫參考