`

Boost 学习笔记 第一天

    博客分类:
  • c++
阅读更多

 

1. timer.hpp

   timer接口简单,轻巧好用  不适合高精度,跨度大的  如以天,月,年为跨度时间单位  可以使用 date_time

     计时用的是标准头文件 <ctime>里的 std::clock()函数   精度依赖操作系统或编译器 难以跨平台

2. progress_timer.hpp 继承 timer

   省去 elapsed(),用于自动计时 小工具

   progress_timer t;//声明对象就开始计时   自动在作用域结束释放,并自动输出计时时间

 

   题外话1:

     java

            int j=0;

            for(int i=0;i<1000;i++){

              j = j++;

            }//最终 j 还是等于 0 

     c++

            int j=0;

            for(int i=0;i<1000;i++){

              j = j++;

            }//最终 j 等于 1000

     题外话2:

        oracle 函数应用 截取字符串  hello 截取掉 h

              除了用 substr ,还可以用 trim  ;

        select trim('h' from 'hello') from dual;               ello

       SELECT LTRIM('WWhhhhhaT is tHis w W','Wh') FROM DUAL;   aT is tHis w W

       SELECT RTRIM('WWhhhhhaT is tHis w W','W w') FROM DUAL;  WWhhhhhaT is tHis

       参考 http://guanhuaing.iteye.com/blog/1498792 

 

3. 扩展 progress_timer 

   progress_timer 使用方便,但是精度才小数点后两位,有些应用不能满足

   可以直接修改 progress_timer.hpp std::streamsize old_prec = m_os.precision( 2 );//2 就是精度 

   本着开一闭原则,没有预留发挥空间。 模板技术仿造 progress_timer 新类

   new_progress_timer.hpp

 

    #include <boost/progress.hpp>

   #include <boost/static_assert.hpp>

   //使用模板参数实现 progress_timer
   template<int N = 2>
   class new_progress_timer : public boost::timer
  {
    public:
        //初始化 输出流 m_os ,并用 static_assert 静态断言 保证 N取值 0和10之间
        new_progress_timer(std::ostream & os=std::cout):m_os(os){
            BOOST_STATIC_ASSERT(N>=0 && N<=10);//静态断言
        }
        ~new_progress_timer(void){
            try{
                //保存流的状态
                std::istream::fmtflags old_flages
                = m_os.setf(std::istream::fixed,std::istream::floatfield);
                std::streamsize old_prec = m_os.precision(N);

                //输出时间
                m_os<<elapsed()<<" s\n"<<std::endl;

                //恢复流状态
                m_os.flags(old_flages);
                m_os.precision(old_prec);
            }catch(...){}
        }
    private:
        std::ostream & m_os;
   };

   //使用模板特化,精度为2的直接继承自progress_timer
   template<>
   class new_progress_timer<2>:public boost::progress_timer{};
#include <stdio.h>
#include <boost/timer.hpp>
#include <boost/progress.hpp>
#include "new_progress_timer.hpp"
using namespace boost;


int main()
{
    //1. timer
    timer t;
    printf("%f h\n",t.elapsed_max()/3600);
    printf("%f s\n",t.elapsed_min());
    printf("%f s\n",t.elapsed());

    printf("\n");
    //2. progress_timer 继承 timer
    progress_timer pt;
    int j=0;
    for(int i=0;i<1000;i++){
        j = j++;
    }
    printf("%d \n",j);

    //3. 扩展progress_timer 精度为10位
    new_progress_timer<10> nt;
    for(int i=0;i<10000000;i++){
        j = j++;
    }
    printf("%d \n",j);



}

0
1
分享到:
评论

相关推荐

    《Boost学习笔记》.pdf

    《Boost学习笔记》.pdf

    Boost 模板元编程学习笔记(二)

    在【标题】和【描述】中提到的“Boost模板元编程学习笔记(二)”主要围绕两个主题展开:数值计算和类型计算。 1. 数值计算 在提供的代码示例中,`binary`模板展示了如何使用模板元编程实现将十进制数转换为二进制...

    Boost学习笔记

    Boost 是一个广泛使用的 C++ 库,由 C++ 标准库的开发者参与编写,旨在增强 C++ 的功能和实用性。Boost 提供了一系列跨平台的工具和库,适用于 Linux 和 Windows 系统。学习 Boost 对于提升 C++ 开发者的技能和效率...

    BOOST学习资料整理收集

    7. **Boost库学习指南**:这是一份详细的Boost库学习教程,涵盖了多个子库的用法。 8. **boost-thread**:Boost线程库是C++11之前实现线程操作的重要工具,提供了线程同步、互斥量等功能。 9. **智能指针的标准之争 ...

    boost学习资料下载

    Boost库是C++编程语言中的一个开源库集合,它提供了大量的高效、高质量的库,用于扩展C++的标准库。在给定的“boost学习资料下载”中,特别提到了两个关键点:`boost graph`库以及`boost中文说明`。 首先,让我们...

    BOOST入门笔记

    **BOOST入门笔记** Boost库是C++编程语言的一个开源库,它提供了许多高效、高质量的工具,以增强C++的功能性和可移植性。Boost库包含了众多模块,如nocopyable、singleton、asio、filesystem、bind、thread和future...

    CRM模式BOOST拓扑结构实现PFC的学习笔记

    **CRM模式BOOST拓扑结构实现PFC的知识点详解** 功率因数校正(PFC,Power Factor Correction)技术是电力电子领域中一个重要的概念,它旨在提高交流电源系统的...希望这些学习笔记能帮助读者深入理解和应用PFC技术。

    boost文档学习资料

    Boost库是C++编程语言中的一个开源库集合,它提供了大量的高效、跨平台的库,以扩展C++的标准库功能。这些库涵盖了算法、数据结构、模板元编程、并发、图形算法、数学函数等多个领域,极大地提升了C++的实用性和灵活...

    Boost库学习资料.rar

    第一本书“Beyond the C++ Standard Library”旨在帮助读者理解Boost库如何超越C++标准库的界限,提供更高级、更强大的工具。它涵盖了Boost库的主要组件,包括Boost.Asio(网络编程)、Boost.Filesystem(文件系统...

    开关电源BUCK BOOST参考笔记

    ### 开关电源BUCK BOOST参考笔记 #### 一、引言 在电子设备的设计与制造过程中,开关电源作为能量转换的核心部件,对于整个系统的稳定性和效率具有决定性的影响。其中,BUCK(降压)和BOOST(升压)两种基本类型的...

    Boost学习系列

    Boost学习系列 Boost 库是 C++ 标准库的补充库,它提供了许多现代化的库,使得 C++ 开发更加高效和强大。Boost 库是开源的,遵循 Boost Software License,它允许任何人自由地使用、修改和分发。Boost 库是平台独立...

    AWR1443boost用户指南笔记1

    AWR1443boost 用户指南笔记 1 AWR1443boost 是一款用于评估 AWR1443 单芯片毫米波传感器的评估板。该板载天线、基于 XDS110 的 JTAG、用于 FFT 和 CFAR 的硬件加速器等特性,旨在帮助开发者快速开始开发毫米波雷达...

    Node.js-Boostnote是一款采用ElectronJs开发的开源笔记应用

    Boostnote是一款基于Electron Js构建的开源笔记应用程序,专为开发者和极客设计。它集成了Markdown语法,方便用户创建、编辑和管理技术文档。Electron Js是一个由GitHub开发的跨平台框架,允许使用JavaScript、HTML...

    boost学习书籍汇总

    An+Introduction+to+Boost.chm Beyond+the+C+++Standard+Library(中文版...Boost And STL学习资料 .chm boost graph library.pdf Boost程序库完全开发指南.pdf Boost学习指南.pdf 智能指针的标准之争 Boost_vs_Loki.pdf

    boost开发指南第三版

    从描述中提到的“boost开发指南第三版”,我们可以推断,这本书是专门用来指导开发者如何使用Boost库的,并且是深入的内容,覆盖了Boost库的各个模块和组件。 Boost库的开发指南书籍通常会包含以下几个知识点: 1....

    标准C_C++_boost基础学习_boost开发

    1. "Boost+库+学习指南+.pdf"可能是一本详细介绍Boost库用法的指南,涵盖了各个库的使用方法和示例。 2. "C.Plus.Plus.Standard.Library.A.Tutorial.and.Reference.chm"是C++标准库的教程和参考手册,对STL的各个...

Global site tag (gtag.js) - Google Analytics