1. 程式人生 > 其它 >stl Queue容器

stl Queue容器

Queue容器
Queue容器概述
queue佇列與棧有點類似,棧一個是在同一端存取資料,佇列一個是在一端存入資料,另一端取出資料。單向佇列中的資料是先進先出(First In First Out,FIFO)。在STL中,單向佇列也是以別的容器作為底部結構,再將介面改變,使之符合單向佇列的特性就可以了。因此實現也是非常方便的。下面就給出單向佇列的函式列表。單向佇列一共6個常用函式(front()、back()、push()、pop()、empty()、size()),與棧的常用函式較為相似。
可以看出,由於queue只是進一步封裝別的資料結構,並提供自己的介面,所以程式碼非常簡潔,如果不指定容器,預設是用deque來作為其底層資料結構的(對deque不是很瞭解?可以參閱《STL系列之一deque雙向佇列》)。
Queue容器不支特迭代器
Queue建構函式
標頭檔案queue
queue<emlm> q;//空佇列
queue<emlm>a(q);//複製構造一個佇列
Queue成員函式
front()//返回隊首元素
back()//返回隊尾元素
push()//入隊
pop()//出隊
empty()//判空
size()//元素個數
練習


P1996約瑟夫問題
題目描述
n 個人圍成一圈,從第一個人開始報數,數到 m 的人出列,再由下一個人重新從 1 開始報數,數到 m 的人再出圈,依次類推,直到所有的人都出圈,請輸出依次出圈人的編號。
輸入格式
輸入兩個整數 n,m。
輸出格式
輸出一行 n 個整數,按順序輸出每個出圈人的編號。
練習
輸入輸出樣例
輸入 #1
10 3
輸出 #1
3 6 9 2 7 1 8 5 10 4
說明/提示
1 ≤m,n≤100
P114101迷宮
題目描述
有一個僅由數字0與1組成的n×n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。
你的任務是:對於給定的迷宮,詢問從某一格開始能移動到多少個格子(包含自身)。
輸入格式
第1行為兩個正整數n,m。
下面n行,每行n個字元,字元只可能是0或者1,字元之間沒有空格。
練習
接下來m行,每行2個用空格分隔的正整數i,j,對應了迷宮中第i行第j列的一個格子,詢問從這一格開始能移動到多少格。
輸出格式
m行,對於每個詢問輸出相應答案。
輸入輸出樣例
輸入 #1
2 2
01
10
1 1
2 2
輸出 #1
4
4
說明/提示
所有格子互相可達。
對於20%的資料,n≤10n≤10;
對於40%的資料,n≤50n≤50;
對於50%的資料,m≤5m≤5;
對於60%的資料,n≤100,m≤100n≤100,m≤100;
對於100%的資料,n≤1000,m≤100000n≤1000,m≤100000。

P1162 填塗顏色
題目描述
由數字0組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如:6×6的方陣(n=6),塗色前和塗色後的方陣如下:
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1

0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1。
輸入格式
每組測試資料第一行一個整數n(1≤n≤30)
接下來n行,由0和1組成的nn×n的方陣。
方陣內只有一個閉合圈,圈內至少有一個0。
輸出格式
已經填好數字2的完整方陣。
輸入輸出樣例
輸入 #1
6
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1
輸出 #1
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1
說明/提示
1 ≤n≤30
P1540 [NOIP2010 提高組] 機器翻譯
P1443馬的遍歷