开始拜读《Boost程序库完全开发指南》一书
#include <boost\timer.hpp> //timer
#include <boost\progress.hpp> //progress_timer , progress_display
using namespace boost;
#include <iostream>
#include <sstream> // stringstream
#include <Windows.h> // Stop()
using namespace std;
//扩展progress_timer的计时精度
class new_progress_timer : public timer, private noncopyable
{
public:
explicit new_progress_timer(std::ostream & os = std::cout)
: timer(), noncopyable(), m_os(os) {}
void set_precision(int precision)
{
this->precision = precision;
}
~new_progress_timer()
{
try
{
std::istream::fmtflags old_flags = m_os.setf(std::istream::fixed,
std::istream::floatfield);
std::streamsize old_prec = m_os.precision(precision);
m_os << elapsed() << " s\n" // "s" is System International d‘Unites std
<< std::endl;
m_os.flags(old_flags);
m_os.precision(old_prec);
}
catch (...) {} // eat any exceptions
} // ~progress_timer
private:
std::ostream & m_os;
int precision = 3;
};
int main()
{
//timer
/*
timer t;//一旦声明构造函数启动计时
cout << "max timespan :" << t.elapsed_max() / 3600 << "h" << endl; //可度量的最大时间
cout << "min timespan :" << t.elapsed_min() << "s" << endl; //可度量的最小时间
cout << "now time elapesd:" << t.elapsed() / 3600 << "s" << endl;//自从对象t创建已经流逝的时间
int stop;
cin >> stop;
*/
//progress_timer
/*
progress_timer t;//在析构时会自动输出已经流逝的时间
//cout << t.elapsed() << endl; //继承自timer,可以按照timer用
//在同一个程序中测量多个时间用花括号限定生命周期
{
progress_timer t;
}
{
progress_timer t;
}
//转移progress_timer的输出
stringstream ss;
{
ss << "by stringstream :";
progress_timer t(ss);
}
cout << ss.str() << endl;
*/
//扩展计时精度 -- 仿造progress_timer 从timer 继承
/*
{
new_progress_timer t;
t.set_precision(1);
}
{
new_progress_timer t;
t.set_precision(2);
}
{
new_progress_timer t;
t.set_precision(3);
}
{
new_progress_timer t;
t.set_precision(4);
}
{
new_progress_timer t;
t.set_precision(5);
}
int stop;
cin >> stop;
*/
//在屏幕上显示进度条 -- 适用于progress_display和程序本身输出源不同的情况
int cycle = 100;
progress_display t(cycle);
while (cycle--)
{
Sleep(100);
t += 1;
}
int stop;
cin >> stop;
}管理支撑办公系统技术架构选型及相关技术应用范围、方法分析,布布扣,bubuko.com
原文:http://blog.csdn.net/xiaoyw71/article/details/23744463