zoukankan      html  css  js  c++  java
  • CLion之C++框架篇-优化框架,引入boost(三)

     
    背景
     
      结合上一篇CLion之C++框架篇-优化框架,单元测试(二),继续进行框架优化!这一版优化引入一个我们日常经常使用的操作库Boost,估算使用频率在70%以上!
     
      Boost的优势在哪里?
      1、Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉。
      2、它由C++标准委员会部分成员所设立的Boost社区开发并维护;
      3、使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。 
      4、代码开源,你可以直接看到底层代码实现,为我们学习c++提供参考标准!
     
     
    boost能做什么?
      
      时间与日期
      内存管理
      字符串与文本处理
      正确性与测试
      容器与数据结构
      算法
      数学与数字
      操作系统相关
      函数与回调
      并发编程
      编程语言支持
     
     
    下载安装Boost库
     
     
      下载地址:https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz
      
      
    cd boost_1_67_0
    ./bootstrap.sh
    ./b2  install
    
     
      
        我的机器安装了10分钟左右(时间有点长,耐心等待)
      头文件位于:/usr/local/include/boost
      库路径位于:/usr/local/lib
     
      看看都安装了哪些库
    ./bjam --show-libraries
    The following libraries require building:
        - atomic
        - chrono
        - container
        - context
        - contract
        - coroutine
        - date_time
        - exception
        - fiber
        - filesystem
        - graph
        - graph_parallel
        - iostreams
        - locale
        - log
        - math
        - mpi
        - program_options
        - python
        - random
        - regex
        - serialization
        - signals
        - stacktrace
        - system
        - test
        - thread
        - timer
        - type_erasure
        - wave
    

      

     
     
    在框架中使用boost
     
     
     boost版本跟cmake版本是有直接关系的
     
    编辑顶层的CMakeLists.txt,如图:
     
     

    直接在test下的代码里引用执行:

     
     

     
    case——时间与日期
     
    背景:C++一直以来缺少对时间和日期的处理能力,而时间与日期又是现实生活中经常遇到的,C++程序员不得不求助于C,使用笨拙的结构和函数(struct tm,time())。Boost使用timer和date_time库完美地解决了这个问题。
     
    timer库:是一个很小的库,提供简易的度量时间和进度显示功能,用于性能测试等需要计时的任务。主要包括三个组建:计时器类timer、progress_time和进度指示类progress_display。
     
    数据进度
     
     

     获取今天、昨天、明天

    更多样例:http://boost.ez2learn.com/doc/html/date_time/examples.html 

    ## 错误boost::gregorian::greg_month::get_month_map_ptr()"

    解决方式:在CMakeLists.txt里添加 set(CMAKE_CXX_FLAGS   "-lboost_date_time-mt-d");
     
    git版本管理项目
     
     
    日常操作中,隐藏掉那些不需要的目录及文件,方便进行git的文件管理
     
     
    推荐
  • 相关阅读:
    Error-Project facet Java version 1.8 is not supported
    如何运行Struts2官网最新Demo?
    Java计算两个字符串日期之间的天数差
    Mybatis XML配置
    使用本地缓存快还是使用redis缓存好?
    mysql数据统计技巧备忘录
    java中的全局变量如何实现?ThreadLocal~
    干货!一次kafka卡顿事故排查过程
    《Java 多线程编程核心技术》- 笔记
    《分布式服务框架原理与实践》- 总结一下吧
  • 原文地址:https://www.cnblogs.com/baochuan/p/9118907.html
Copyright © 2011-2022 走看看