看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
Jockey66666: iterator04/25 21:02
soheadsome: vector跟deque都可以push或emplace back04/25 22:56
soheadsome: 或是直接在建構子塞你要使用的container 再去做iter04/25 22:58
longlongint: do pop 5 times04/25 23:19
我的目的是想要值一邊fifo進來 一邊將queue裡的所有值拿出來計算 並輸出計算後的值,有辦法這樣做嗎? ※ 編輯: t78923t (120.126.5.208), 04/25/2016 23:48:39 ※ 編輯: t78923t (120.126.5.208), 04/26/2016 00:10:20
dritchie: 用std::list04/26 00:22
longlongint: iter04/26 00:22
longlongint: 如果是我會用陣列做或是事先加總queue裡面的值04/26 00:24
longlongint: push, sum+=. ,pop sum-=04/26 00:24
Feis: 建構子塞 container 應該是 copy 或 move 之類的04/26 01:17
Feis: 感覺硬要的話要去拿 protected member.04/26 01:19
Feis: 可以考慮擴充 queue04/26 01:24
Caesar08: 那就用deque。有前後插入的功能,又可以存取每個element04/26 10:49
deque::at可以提出每個值來做運算嗎? 例如將值存到其他變數做加減 還是一樣要用iter來取值? ※ 編輯: t78923t (163.25.86.76), 04/26/2016 12:26:17
Caesar08: 可以。不過你應該先查reference,你問的東西在上面都有 04/26 12:28
謝謝大家! ※ 編輯: t78923t (120.126.5.208), 04/26/2016 13:16:58