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

  • 相关阅读:
    纯css3实现旋转的太极图
    webstorm9.3 安装less 编译css教程
    javascript之查找数组中最小/最大的数
    javascript基础之打印乘法表
    javascript之查找数组元素
    jvascript 顺序查找和二分查找法
    Vue基础知识之常用属性和事件修饰符(二)
    Vue源码(一)
    BFC以及margin的深入探究
    jQuery中Ajax参数详细介绍
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2418275.html
Copyright © 2011-2022 走看看