[问题] 样板程式库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