作者t78923t (トースト)
看板C_and_CPP
标题[问题] 样板程式库queue问题
时间Mon Apr 25 20:55:56 2016
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1461588960.A.262.html
※ 编辑: t78923t (120.126.5.217), 04/25/2016 20:57:09
1F:→ Jockey66666: iterator04/25 21:02
2F:推 soheadsome: vector跟deque都可以push或emplace back04/25 22:56
3F:推 soheadsome: 或是直接在建构子塞你要使用的container 再去做iter04/25 22:58
4F:推 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
5F:→ dritchie: 用std::list04/26 00:22
6F:→ longlongint: iter04/26 00:22
7F:→ longlongint: 如果是我会用阵列做或是事先加总queue里面的值04/26 00:24
8F:→ longlongint: push, sum+=. ,pop sum-=04/26 00:24
9F:→ Feis: 建构子塞 container 应该是 copy 或 move 之类的04/26 01:17
10F:→ Feis: 感觉硬要的话要去拿 protected member.04/26 01:19
11F:→ Feis: 可以考虑扩充 queue04/26 01:24
12F:→ Caesar08: 那就用deque。有前後插入的功能,又可以存取每个element04/26 10:49
deque::at可以提出每个值来做运算吗?
例如将值存到其他变数做加减
还是一样要用iter来取值?
※ 编辑: t78923t (163.25.86.76), 04/26/2016 12:26:17
13F:→ Caesar08: 可以。不过你应该先查reference,你问的东西在上面都有 04/26 12:28
谢谢大家!
※ 编辑: t78923t (120.126.5.208), 04/26/2016 13:16:58