背景
 
  结合上一篇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的文件管理
 

推荐

CLion之C++框架篇-优化框架,引入boost(三)的更多相关文章

  1. CLion之C++框架篇-优化框架,单元测试(二)

    背景   结合上一篇CLion之C++框架篇-安装工具,基础框架的搭建(一),继续进行框架优化!   googletest(GTest)是Google开源的C++测试框架,与CLion组合,对C++环 ...

  2. CLion之C++框架篇-优化开源框架,引入curl,实现get方式获取资源(四)

      背景   结合上一篇CLion之C++框架篇-优化框架,引入boost(三),继续进行框架优化!在项目中,我们经常会通过get方式拉取第三方资源,这一版优化引入类库curl,用来拉取第三方资源库. ...

  3. java基础之框架篇(1)

    框架基础反射:反射是Java开发的一类动态相关机制.因为本身Java语言并不是一款动态语言,如果我们想要得到程序动态的效果,因此便引入了反射机制这一概念. 问题:Java中创建实例化对象有哪些方式? ...

  4. 滴滴Booster移动APP质量优化框架 学习之旅 三

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 滴滴Booster移动App质量优化框架-学习之旅 二对重复资源 ...

  5. 第一篇web框架

    第一篇web框架 http协议 web应用和web框架 主 文 http协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维 ...

  6. [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法

    一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...

  7. 滴滴 App 的质量优化框架 Booster,开源了!

    一. 序 当 App 达到一定体量的时候,肯定是要考虑质量优化.有些小问题,看似只有 0.01% 触发率,但是如果发生在 DAU 过千万的产品中,就很严重了. 滴滴这个独角兽的 DAU 早已过千万,自 ...

  8. Spring Boot 揭秘与实战(三) 日志框架篇 - 如何快速集成日志系统

    文章目录 1. 默认的日志框架 logback2. 常用的日志框架 log4j 1.1. 日志级别 1.2. 日志文件 3. 源代码 Java 有很多日志系统,例如,Java Util Logging ...

  9. 在线学习和在线凸优化(online learning and online convex optimization)—在线凸优化框架3

    近年来,许多有效的在线学习算法的设计受到凸优化工具的影响. 此外,据观察,大多数先前提出的有效算法可以基于以下优雅模型联合分析: 凸集的定义: 一个向量 的Regret定义为: 如前所述,算法相对于竞 ...

随机推荐

  1. es6对象的扩展

    对象(object)是 JavaScript 最重要的数据结构之一. object 在es6中新增了很多便利的方法 在es6中允许直接写入变量和方法的名称直接作为对象的属性 let x =1 ,y=2 ...

  2. Linux-Centon7安装以及配置

    环境:MacOS 10.13.6 虚拟机:VirtualBox6.0(VirtualBox-6.0.4-128413-OSX.dmg) Linux:Centos7(CentOS-7-x86_64-Mi ...

  3. Unity3D-RayMarch-几何图元1-添加基本着色模型

    效果图: 使用phong着色模型,将环境光.物体的漫反射光.镜面光三种光效加合而得到上图的效果 raymarch 的shader代码: // Upgrade NOTE: replaced '_Obje ...

  4. The Swap

    源程序 swap.cpp* 输入文件 swap.in 输出文件 swap.out 时间限制 1s 空间限制 256MB [问题描述] Alice 得到了一个整数, 她将其视作长度为 n 的字符串 S. ...

  5. Eureka的服务注册与发现概念(三)

    一.Eureka介绍 Netflix在设计Eureka时遵守的AP原则.Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层 ...

  6. 在linux上添加硬盘

    首先呢我们需要添加一个硬盘,如下所示: 接着我们需要新建一个硬盘 代码如下: mkdir /bak fdisk -l 接着我们继续第二步,分区 代码如下: fdisk /dev/sdb n   add ...

  7. linux常用命令简介

    不管是测试还是开发,平时或多或少都要用到Linux命令,下面就把平时必用的一些命令简单总结哈,快学快用 1.   ls : 列举当前目录下文件.子目录的名字,如图举例: (1)  ls  -l  : ...

  8. Nexus 3 搭建 npm 私服 (windows)

    Nexus 3 搭建 npm 私服备忘 下载与安装 在官网下载Nexus Repository Manager OSS 3.x, 解压至任意位置. 管理员运行 powershell, 切换到 nexu ...

  9. vue版 文件下载

    标签的download: 是HTML5标准新增的属性,作用是指示浏览器下载URL而不是导航到URL,因此将提示用户将其保存为本地文件. 这种是定义的接口不是下载文件的路径,而是通过API可以获得文件的 ...

  10. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)数字拆分

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...