文件读取,双端队列实现滑动窗
来源:互联网 发布:java ssh协议 编辑:程序博客网 时间:2024/06/07 17:24
本文所讲的是:使用C++中文件流读取文件数据保存到数组,再用双端队列实现滑动窗口:
文件读取操作:需加入文件流头文件:
#include <fstream>
#include <cstring>
#include <sstream>
ifstream ifile("/home/桌面/aaa/"+to_string(t1)+".txt");//路径+文件名 int a[8][2]; char line[256]; int intarr[5]; int linenum=1,k=0; //读txt数值保存到数组中 while(ifile.good()) { ifile.getline(line,68); // puts(line); istringstream iss(line); iss>>intarr[0]>>intarr[1]>>intarr[2]; // cout<<"第"<<linenum<<"行"<<endl; if(linenum>=62&&linenum<=69) //60-67将所有数据保存到数组a中。 { for(int i=0;i<2;++i) { // cout<<intarr[i]<<endl; a[k][i]=intarr[i]; } k++; } linenum++; } ifile.close();
分段输入数据,当大于时间窗的数目时,pop(弹出)一个再push一个,以保证队列中始终是有时间窗长度个数据。
双端队列deque,需加入头文件。弹出为:pop,压入为push. back为尾部,front为首部。.size()为求队列元素个数的方法。
#include <deque>
if(i>=WIN) mode=1; //滑动窗口大小 switch(mode){ case 0: dequetest.push_front(aph); //cout<<m; if(aph>YAWN){ //哈欠的张口度阈值YAWN(4处)aph值的计算为使用前面存储在a数组中的数据计算得到,此处省略。 state.push_front(1); } if(aph<YAWN) { state.push_front(0); // t++; } break; case 1: //cout<<m; state.pop_back(); dequetest.pop_back(); dequetest.push_front(aph); if(aph>YAWN){ state.push_front(1); } if(aph<YAWN) { state.push_front(0); } break; default: break; }
这样就实现了双端队列实时存储数据,也就实现了时间窗滑动的功能。该队列与普通数组具有相同的索引方式,dequetest[10]表示当前队列第11号元素。本文代码实现的是从头部push,也就是每次新读到的数据会保存在dequetest[0]中,而每次删除数据都是将dequetest的最后一个元素弹出堆栈。
如将尾部作为新增数据的存储位置,首部作为弹出的位置,可以写为:
if(i>=WIN) mode=1; //滑动窗口大小 switch(mode){ case 0: dequetest.push_back(aph); //cout<<m; if(aph>YAWN){ //aph值的计算为使用前面存储在a数组中的数据计算得到,此处省略。 state.push_back(1); } if(aph<YAWN) { state.push_back(0); // t++; } break; case 1: //cout<<m; state.pop_front(); dequetest.pop_front(); dequetest.push_back(aph); if(aph>YAWN){ state.push_back(1); } if(aph<YAWN) { state.push_back(0); } break; default: break; }
阅读全文
0 0
- 文件读取,双端队列实现滑动窗
- 【双端队列】滑动的窗户 window
- 滑动最小值(双端队列)
- 文件上传-队列多线程读取文件内容
- 滑动窗口的最大值——双端队列
- SpringMVC实现读取文件
- 多线程读取循环队列的实现
- 双端队列实现分析
- java实现双端队列
- 双端队列的实现
- 双端队列实现分析
- 双端队列的实现
- 双端队列简要实现
- 双端队列实现栈
- 双端队列 C 实现
- PHP实现双端队列
- 滑动窗口/单调队列之代码实现_legend
- 队列实现文件C语言
- 登录,注册
- nginx 服务器重启命令,关闭
- 理解docker部署springboot-容器日志处理(四)
- 【java】SSM框架搭建(一)——idea搭建maven聚合工程
- rpm五种操作的常用命令
- 文件读取,双端队列实现滑动窗
- Linux学习(二)
- 使用ajax时,需要返回一个页面的写法
- @Autowired不支持ststic域注入
- Linux手动分割文件,同时不影响程序的日志输出
- 腾讯通无法刷新组织架构的解决办法收集
- C/C++中键盘输入数组越界问题
- 后台架构师图谱
- 2017.10.22队内互测——Loi水题汇总