C++ Boost库:简介和第一个示例程序
文章目录
- 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
几乎适用壬任何现代操作系统,Windows
、Linux
、UniX,
包括UNIX
和Windows
变体。
- 开源免费
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库:简介和第一个示例程序相关推荐
- 【C++】Boost库简介
参考: https://blog.csdn.net/f110300641/article/details/81865545 https://www.boost.org/doc/libs/1_80_0/ ...
- Boost(1):Boost库简介及安装
1. Boost库介绍 Boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,在1998年由Beman G.Dawes发起倡议并建立.使用了许多现代C++编程技术,内容涵盖字符串 ...
- VS2022+boost库开发支持XP的MFC程序
欢迎大家关注我的公*号:embedded_bug 有人可能会问,这都什么年代了,还需要开发XP下的程序,而且还是用MFC?如果经常和工业企业打交道的话,会知道还有大量的企业系统运行着XP系统,并且使用 ...
- C++ Boost库简介
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具类, ...
- K210系列第一个示例程序
引言 关于K210的受众群体也算不少,在网上许多爱好者写了各种学习教程.本系列文章的目的是帮大家从众多信息中梳理一些关键步骤. 第一篇文章让大家了解K210芯片的性能如何,能做哪些事. 第二篇文章带大 ...
- Spring开发环境搭建和第一个示例程序
前言 虽然之前用过Spring,但是今天试着去搭建依然遇到了困难,而且上网找教程,很多写的是在web里使用Spring MVC的示例,官方文档里的getting start一开始就讲原理去了(可能打开 ...
- JSF学习笔记--JSF简介,JSF第一个应用程序
1.JSF简介: JavaServer Faces的提出,让不同技术的人员可以彼此合作又不互相干扰,JavaServer Faces 也允许自定义标签,Java Community Process( ...
- shell脚本 简介 及 第一个脚本程序
文章目录 什么是 shell脚本 shell脚本优点 第一个脚本的编写与执行 编写第一个脚本 执行脚本 什么是 shell脚本 shell 脚本就是利用 shell 的功能所写的一个程序( progr ...
- C++ Boost库:数值转换 lexical_cast
文章目录 1. C/C++数值转换函数 2. boost数值转换lexical_cast C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C++ ...
最新文章
- linux下occi操作oracle数据库,中文乱码的问题
- 一文拆解中国火星车着陆全过程
- content 内容生成技术2
- 字典生成_Python数据字典生成工具详解
- vuex中store 的mutation
- python显示range_python中range如何输出
- SQLSERVER数据仓库的构建与分析
- MySQL—常用指令总结
- myeclipse 10.7安装过程与初次启动
- 深入解析Windows操作系统之基础概念和术语
- win10怎么设置默认输入法_微软拼音输入法怎么设置快捷短语
- 基于51单片机的知识
- Android多开/分身检测
- Pool tag list
- Matlab科研绘图颜色补充(特别篇)—51种中国传统颜色
- linpack环境搭建:Openmpi+Openblas+HPL安装教程
- SEM竞价推广创意快速撰写的方法,智能创意制作
- [NOI2003] 文本编辑器
- 彻底卸载Tomcat
- 从复旦危化品中学到的项目经验