[問題] 樣板程式庫queue問題

作者: t78923t (トースト)   2016-04-25 20:55:56
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS2008
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
queue
問題(Question):
利用函式庫裡的push及pop可以成功建出一個FIFO的buffer,
假如長度是5,請問有辦法將裡面的5個數值取出來做其他計算嗎?
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue <double> buffer;
const int NUMBERS_SIZE = 10;
double numbers[NUMBERS_SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0,
6.0, 7.0, 8.0, 9.0, 10.0};
for (int i = 0; i < 10; i++)
{
buffer.push(numbers[i]);
if (buffer.size() == 5)
{
buffer.pop();
}
}
system("PAUSE");
return 0;
};
程式碼大概如上,請問有辦法將buffer內的5個數值取出來做計算嗎?
謝謝
補充說明(Supplement):
作者: Jockey66666 (往事已成追憶)   2016-04-25 21:02:00
iterator
作者: soheadsome (師大狗鼻哥)   2016-04-25 22:56:00
vector跟deque都可以push或emplace back或是直接在建構子塞你要使用的container 再去做iter
作者: longlongint (華哥爾)   2016-04-25 23:19:00
do pop 5 times
作者: dritchie (卍~邁斯納效應~卍)   2016-04-26 00:22:00
用std::list
作者: longlongint (華哥爾)   2016-04-26 00:22:00
iter如果是我會用陣列做或是事先加總queue裡面的值push, sum+=. ,pop sum-=
作者: Feis (永遠睡不著 @@)   2016-04-26 01:17:00
建構子塞 container 應該是 copy 或 move 之類的感覺硬要的話要去拿 protected member.可以考慮擴充 queue
作者: Caesar08 (Caesar)   2016-04-26 10:49:00
那就用deque。有前後插入的功能,又可以存取每個element可以。不過你應該先查reference,你問的東西在上面都有

Links booklink

Contact Us: admin [ a t ] ucptt.com