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

看板C_and_CPP作者 (トースト)時間9年前發表 (2016/04/25 12:56), 9年前編輯推噓3(3010)
留言13則, 6人參與, 最新討論串1/1
開發平台(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): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.126.5.217 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1461588960.A.262.html ※ 編輯: t78923t (120.126.5.217), 04/25/2016 20:57:09

04/25 21:02, , 1F
iterator
04/25 21:02, 1F

04/25 22:56, , 2F
vector跟deque都可以push或emplace back
04/25 22:56, 2F

04/25 22:58, , 3F
或是直接在建構子塞你要使用的container 再去做iter
04/25 22:58, 3F

04/25 23:19, , 4F
do pop 5 times
04/25 23:19, 4F
我的目的是想要值一邊fifo進來 一邊將queue裡的所有值拿出來計算 並輸出計算後的值,有辦法這樣做嗎? ※ 編輯: t78923t (120.126.5.208), 04/25/2016 23:48:39 ※ 編輯: t78923t (120.126.5.208), 04/26/2016 00:10:20

04/26 00:22, , 5F
用std::list
04/26 00:22, 5F

04/26 00:22, , 6F
iter
04/26 00:22, 6F

04/26 00:24, , 7F
如果是我會用陣列做或是事先加總queue裡面的值
04/26 00:24, 7F

04/26 00:24, , 8F
push, sum+=. ,pop sum-=
04/26 00:24, 8F

04/26 01:17, , 9F
建構子塞 container 應該是 copy 或 move 之類的
04/26 01:17, 9F

04/26 01:19, , 10F
感覺硬要的話要去拿 protected member.
04/26 01:19, 10F

04/26 01:24, , 11F
可以考慮擴充 queue
04/26 01:24, 11F

04/26 10:49, , 12F
那就用deque。有前後插入的功能,又可以存取每個element
04/26 10:49, 12F
deque::at可以提出每個值來做運算嗎? 例如將值存到其他變數做加減 還是一樣要用iter來取值? ※ 編輯: t78923t (163.25.86.76), 04/26/2016 12:26:17

04/26 12:28, , 13F
可以。不過你應該先查reference,你問的東西在上面都有
04/26 12:28, 13F
謝謝大家! ※ 編輯: t78923t (120.126.5.208), 04/26/2016 13:16:58
文章代碼(AID): #1N7XFW9Y (C_and_CPP)