queue クラス

[機能]

  待ち行列を保持します.STL コンテナの一部を利用して,特別な機能(コンテナの一方から要素が挿入され,反対側から要素を取り出す)を持たせたクラスであり,コンテナアダプタと呼ばれています.Container は queue を実際に保持するコンテナであり,省略すると deque になります.なお,以下に示す関数において,一般に,push よりも,emplace を使ったほうが処理効率は良くなります.
template <class T, class Container = deque<T>> class queue		

[使用方法]
#include <queue>
using namespace std;
queue <T> 変数名;
   queue<int> x;   // 空の queue
   queue<int> x(y);   // queue y で初期化,C++11		
[メンバー関数等]

[演算子の多重定義]
==  <  <=  !=  >  >=		

[使用例]

  1. queue の使用方法です.以下に示すプログラム例において,いくつかのコメント部分は,その前に記述された方法とほぼ同等なものであることを示しています.
    #include <iostream>
    #include <queue>
    
    using namespace std;
    
    void print(queue<int> &q) {
    	if (q.empty())
    		cout << "   queue は空です\n";
    	else
    		cout << "   先頭及び最後尾の要素: " << q.front() << " " << q.back() << endl;
    }
    
    int main()
    {
    	queue<int> q;
    					// push
    	cout << "**push**\n";
    	q.push(1);   // q.emplace(1);
    	print(q);
    	q.push(3);   // q.emplace(3);
    	print(q);
    	q.push(2);   // q.emplace(2);
    	print(q);
    					// swap
    	cout << "**swap**\n";
    	queue<int> q1;
    	q1.swap(q);
    	print(q);
    					// pop
    	cout << "**pop**\n";
    	q1.pop();
    	print(q1);
    	q1.pop();
    	print(q1);
    	q1.pop();
    	print(q1);
    
    	return 0;
    }
    			
    (出力)
    **push**
       先頭及び最後尾の要素: 1 1
       先頭及び最後尾の要素: 1 3
       先頭及び最後尾の要素: 1 2
    **swap**
       queue は空です
    **pop**
       先頭及び最後尾の要素: 3 2
       先頭及び最後尾の要素: 2 2
       queue は空です
    			
[参照]

vectorsetmultimaparraylistmapmultisetpriority_queuedequestackforward_listunordered_mapunordered_multimapunordered_setunordered_multiset

菅沼ホーム 本文目次 演習問題解答例 付録目次 索引