文章目录

  • 1. 简介
  • 2. Boost库开发环境搭建
  • 3. 一个简单的示例程序
  • 4. hpp文件简介

C++ Boost库:简介和第一个示例程序
C++ Boost库:数值转换 lexical_cast
C++ Boost库:字符串格式化 format
C++ Boost库:字符串string_algo
C++ Boost库:字符串算法string_algo
C++ Boost库:类型推导BOOST_AUTO/BOOST_TYPEOF
C++ Boost库:分词处理库 tokenizer
C++ Boost库:windows下编译Boost库
C++ Boost库:日期时间库 date_time
C++ Boost库:智能指针scoped_ptr
C++ Boost库:数组智能指针 scoped_array
C++ Boost库:共享所有权的智能指针 shared_ptr
C++ Boost库:工厂函数 make_shared
C++ Boost库:共享有权的数组智能指针shared_array
C++ Boost库:弱引用智能指针 weak_ptr
C++ Boost库:禁止拷贝 nocopyable
C++ Boost库:计时器 timer
C++ Boost库:普通数组array
C++ Boost库:散列容器 unordered_set、unordered_multiset
C++ Boost库:散列容器 unordered_map、unordered_multimap
C++ Boost库:双向映射容器 bimap
C++ Boost库:环形缓冲区 circular_buffer
C++ Boost库:动态多维数组 multi_array
C++ Boost库:使用property_tree解析XML和JSON
C++ Boost库:简化循环 BOOST_FOREACH
C++ Boost库:随机数库 Random
C++ Boost库:引用库 ref
C++ Boost库:绑定库 bind
C++ Boost库:线程库 thread 跨平台多线程
C++ Boost库:互斥量 mutex

Highscore - Boost C++ 库

1. 简介

什么是Boost库?

Boost库是一个优秀的、可移植、开源的C++库,它由C++标准委员会库工作组成员发起,其中有些内容经常成为下一代C++标准库内容,在C++社区中影响甚大,是不折不扣的“准”标准库。

Boost库是一个开源免费的第三方库,它是一个非常优秀的库,是C++标准的最好实践之一,因此也经常被用于商业的开发。所以,如果你是搞C++的,还没有听过或用过Boost,你就out了,想想自己是不是跟不上技术的步伐了,哈哈……

Boost库的优势:

  • 可移植

Boost几乎适用壬任何现代操作系统,WindowsLinux、UniX包括UNIXWindows变体。

  • 开源免费

Boost库开源并免费,使用 Boost license来授权使用,根据该协议,商业的非商业的使期都是允许并鼓励的。

  • 高效

Boost很多库(比如Graph)是具有工业强度,设计结构良好,非常优秀的精品代码,并且具有高效性能,被广泛应用,成为具有实践意义的准标准库。

Boost可为大致归入以下分类:

  • 字符串和文本处理库

  • 容器库

  • 迭代器库

  • 算法库

  • 函数对象和高阶编程库

  • 泛型编程

  • 模板元编程

  • 预处理元编程

  • 并发编程

  • 数学和数字

  • 排错和测试

  • 数据结构

  • 图像处理

  • 输入输出

  • 跨语言混合编程

  • 内存管理

  • 解析

  • 编程接口

  • 杂项

  • 编译器问题的变通方案

2. Boost库开发环境搭建

boost库下载: Boost C++ Libraries

目录结构:

boost_1_76_0\ .................The “boost root directory”index.htm .........A copy of www.boost.org starts hereboost\ .........................All Boost Header fileslib\ .....................precompiled library binarieslibs\ ............Tests, .cpps, docs, etc., by libraryindex.html ........Library documentation starts herealgorithm\any\array\…more libraries…status\ .........................Boost-wide test suitetools\ ...........Utilities, e.g. Boost.Build, quickbook, bcpmore\ ..........................Policy documents, etc.doc\ ...............A subset of all Boost library docs

大部分 boost库的使用:

大多数Boost库仅包含头文件(.hpp):它们完全由包含模板和内联函数的头文件组成;链接时不需要单独编译的库二进制文件或特殊处理。

#include <boost/XXX.hpp>

3. 一个简单的示例程序

程序功能:

从标准输入中读取整数序列,使用 Boost.lambda将每个数字乘以三,然后将它们写入标准输出。

在程序中输入以下代码:

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>int main()
{using namespace boost::lambda;typedef std::istream_iterator<int> in;std::for_each(in(std::cin), in(), std::cout << (_1 * 3) << " " );
}

提示无法打开源文件:

找到库目录:

修改项目属性:

生成,成功!

运行:

4. hpp文件简介

hpp(Header plus plus)头文件,顾名思义等于.h加上cpp,在boost开源库中频繁出现,其 实质就是将cpp的实现代码混入.h头文件当中 ,定义实现都包含在同一文件。

hpp文件的优点:

  • hpp文件将定义与实现都包含在同一文件;减少文件的数里。
  • 无需再将cpp加入到项目中进行编译,将代码直接编译到调用者的obj文件中,不再生成单独的obj,大幅度减少编译次数,非常适合编写开源库。
  • Boost库大量使用模板,采用hpp的形式可以保持与各个扁译器更好的兼容性。

A.hpp:

#pragma once
#include<iostream>
using namespace std;
/*
//类的定义和实现放到同一文件中
class  A
{
public :A(int  a);void  Print();
private:int  a;
};A::A(int  a)
{this->a = a;
}void  A::Print()
{cout << a << endl;
}
*///类的定义和实现放到同一文件中
template <typename T>
class  A
{public:A(T  a);void  Print();
private:T  a;
};template <typename T>
A<T>::A(T  a)
{this->a = a;
}template <typename T>
void  A<T>::Print()
{cout << a << endl;
}

main.cpp:

#include"A.hpp"int main()
{A<int>  a(666);a.Print();return 0;
}

运行效果:

C++ Boost库:简介和第一个示例程序相关推荐

  1. 【C++】Boost库简介

    参考: https://blog.csdn.net/f110300641/article/details/81865545 https://www.boost.org/doc/libs/1_80_0/ ...

  2. Boost(1):Boost库简介及安装

    1. Boost库介绍 Boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,在1998年由Beman G.Dawes发起倡议并建立.使用了许多现代C++编程技术,内容涵盖字符串 ...

  3. VS2022+boost库开发支持XP的MFC程序

    欢迎大家关注我的公*号:embedded_bug 有人可能会问,这都什么年代了,还需要开发XP下的程序,而且还是用MFC?如果经常和工业企业打交道的话,会知道还有大量的企业系统运行着XP系统,并且使用 ...

  4. C++ Boost库简介

    boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具类, ...

  5. K210系列第一个示例程序

    引言 关于K210的受众群体也算不少,在网上许多爱好者写了各种学习教程.本系列文章的目的是帮大家从众多信息中梳理一些关键步骤. 第一篇文章让大家了解K210芯片的性能如何,能做哪些事. 第二篇文章带大 ...

  6. Spring开发环境搭建和第一个示例程序

    前言 虽然之前用过Spring,但是今天试着去搭建依然遇到了困难,而且上网找教程,很多写的是在web里使用Spring MVC的示例,官方文档里的getting start一开始就讲原理去了(可能打开 ...

  7. JSF学习笔记--JSF简介,JSF第一个应用程序

    1.JSF简介:  JavaServer Faces的提出,让不同技术的人员可以彼此合作又不互相干扰,JavaServer Faces 也允许自定义标签,Java Community Process( ...

  8. shell脚本 简介 及 第一个脚本程序

    文章目录 什么是 shell脚本 shell脚本优点 第一个脚本的编写与执行 编写第一个脚本 执行脚本 什么是 shell脚本 shell 脚本就是利用 shell 的功能所写的一个程序( progr ...

  9. C++ Boost库:数值转换 lexical_cast

    文章目录 1. C/C++数值转换函数 2. boost数值转换lexical_cast C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C++ ...

最新文章

  1. linux下occi操作oracle数据库,中文乱码的问题
  2. 一文拆解中国火星车着陆全过程
  3. content 内容生成技术2
  4. 字典生成_Python数据字典生成工具详解
  5. vuex中store 的mutation
  6. python显示range_python中range如何输出
  7. SQLSERVER数据仓库的构建与分析
  8. MySQL—常用指令总结
  9. myeclipse 10.7安装过程与初次启动
  10. 深入解析Windows操作系统之基础概念和术语
  11. win10怎么设置默认输入法_微软拼音输入法怎么设置快捷短语
  12. 基于51单片机的知识
  13. Android多开/分身检测
  14. Pool tag list
  15. Matlab科研绘图颜色补充(特别篇)—51种中国传统颜色
  16. linpack环境搭建:Openmpi+Openblas+HPL安装教程
  17. SEM竞价推广创意快速撰写的方法,智能创意制作
  18. [NOI2003] 文本编辑器
  19. 彻底卸载Tomcat
  20. 从复旦危化品中学到的项目经验

热门文章

  1. js实现按键使div移动
  2. echats实现进度条、饼状图、折线图、柱状图、柱状图和折线图的集合体
  3. IDEA离线安装Oracle数据库驱动包
  4. 2016寒假读书笔记
  5. SWT的MessageBox对话框
  6. OpenSSH: 通过 LDAP 做认证
  7. 怎样在ipad安装ipa文件
  8. 医药公司协同电子商务系统
  9. 微软DNS服务器默认,Microsoft Windows Server DNS 配置打开地址套接字
  10. python3.7反编译生成的.exe