zoukankan      html  css  js  c++  java
  • Boost–progress_timer

    progress_timer继承自timer,但是精度为2,为了扩展精度,我们自己实现一个类,代码如下:

    #include <iostream>
    #include<boost/progress.hpp>
    #include <boost/static_assert.hpp>
    using namespace std;
    using namespace boost;
    
    
    template<int N=2>
    class new_progress_timer :public timer{
    public:
    	new_progress_timer(ostream &os=cout):m_os(os){
    		
    		BOOST_STATIC_ASSERT(N>=0&&NULL<=10);
    	}
    	~new_progress_timer(){
    
    		try{
    			istream::fmtflags old_flags=m_os.setf(istream::fixed,istream::floatfield);
    			streamsize old_prec=m_os.precision(N);
    
    			//输出时间
    			m_os<<elapsed()<<"s\n"<<endl;
    
    			//恢复流的状态
    			m_os.flags(old_flags);
    			m_os.precision(old_prec);
    		}catch(...){
    			//do nothing
    		}
    	}
    private: 
    	ostream &m_os;
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {	
    	new_progress_timer<10> t;
    
    	//cout<<t.elapsed(); 这里不需要亲自调用,当超过t的作用域的时候自动调用
    	return 0;
    }
    

    image

  • 相关阅读:
    第八次作业
    设计一款给爸爸妈妈用的手机
    第五次作业
    第四次作业(项目分析)
    第二次作业(个人项目实践)
    即时通讯软件的发展演变
    C++用法的学习心得
    JavaScript(变量、作用域和内存问题)
    一、Java和JavaScript
    使用Hyper-V创建虚拟机
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2418275.html
Copyright © 2011-2022 走看看