时间
c++一直缺乏对时间和日期的处理能力,boost使用timer,date_timer,chrono完美解决这个问题。
timer
timer类可以测量时间的流逝,是一个小型计时器。
1 timer t;//声明即开始计时 2 cout<<t.elapsed()<<endl;//输出流逝时间
progress_timer
progress_timer会在析构时自动输出时间。
1 //方法1
2 progress_timer t;
3 cout<<t.elapsed()<<endl;
4 //方法2
5 { 6 progress_timer t; 7 }
progress_display
可以在控制台上显示程序的执行进度。
1 vector<string> v(100); 2 ofstream fs("./test.txt"); 3 progress_display pd(v.size()); 4 for(auto &x:v){ 5 fs<<x<<endl; 6 ++pd; 7 }
效果
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
***************************************************
缺陷:无法将进度显示输出与程序的输出分离。
改进(并非完美):每次显示进度时重新显示进度刻度
1 vector<string> v(100); 2 ofstream fs("./test.txt"); 3 progress_display pd(v.size()); 4 for(auto pos=v.begin();pos!=v.end();pos++){ 5 fs<<*pos<<endl; 6 //++pd; 7 pd.restart(v.size()); 8 pd+=(pos-v.begin()+1); 9 }