24 | Boost:你需要的“瑞士军刀”
该思维导图由 AI 生成,仅供参考
Boost 概览
- 深入了解
- 翻译
- 解释
- 总结
Boost 是一个经过同行评审的、可移植的 C++ 源码库,由 C++ 专家支持,既是 C++ 标准库的灵感来源,也是其试验田。Boost 包含多个库,如智能指针、thread、regex 等,且很多库已进入 C++ 标准。Boost 的安装在主要开发平台上变得更加便捷。Boost.TypeIndex 是一个轻量级库,解决了使用模板时精确知道表达式或变量类型的问题。Boost.Core 提供了一些通用工具,如 `addressof`、`enable_if`、`is_same` 等,其中一些已进入 C++ 标准。Boost 是一个强大的工具集,为 C++ 开发提供了丰富的功能和便利的工具。 Boost::core::demangle 提供了将 `typeid` 返回的内部名称“反粉碎”(demangle)成可读形式的功能。Boost::noncopyable 提供了声明类为不可拷贝的简单方式。Boost::swap 简化了对不知道类型的对象执行交换操作的代码。Boost.Conversion 解决了标准 C++ 中类型之间转换不够方便的问题,提供了 `lexical_cast` 等功能。Boost.ScopeExit 提供了简单的资源管理方式,支持 C++98 的代码。Boost.Program_options 解决了处理命令行参数的问题,提供了更方便的选项处理方式。 Boost.Hana 是一个使用了 C++11/14 实现技巧和惯用法的新库,提供了一整套供编译期使用的数据类型和函数。Hana 本质上以类似普通的运行期编程的写法,来做编译期的计算,展示了很多有趣的用法。尤其值得一看的是,文档中展示了如何利用 Hana 提供的机制,来自己定义 `switch_`、`case_`、`default_`,使得代码可以通过编译。 总之,Boost 提供了丰富的功能和便利的工具,涵盖了 C++ 开发中常见的问题和需求,为开发者提供了强大的支持和便捷的解决方案。Boost.Hana 则是一个使用了 C++11/14 实现技巧和惯用法的新库,提供了一整套供编译期使用的数据类型和函数,展示了很多有趣的用法。 参考资料: [1] Boost C++ Libraries. https://www.boost.org/ [2] David Abarahams and Aleksey Gurtovoy, *C++ Templat
《现代 C++ 编程实战》,新⼈⾸单¥59
全部留言(6)
- 最新
- 精选
- 风羽星泉老师的文章里提到:“实现类似(Boost.ScopeExit)的功能在 C++11 里相当容易“。能教我怎么实现吗?
作者回复: 定义一个RAII类模板,构造时接受一个lambda表达式,把它存到成员里。析构时调用这个成员就行啦。
2020-01-207 - Geek_Frank您好,POCO库您觉得怎么样?
作者回复: 不熟,没法给出技术评价。 从理念上来说,我不喜欢大框架。小而精的东西更容易和其他东西组合。而框架的东西,一旦用了某一个,就很难在重叠的领域用其他的东西,总体不见得有利。也就初期上手可能容易些吧,从学习的角度,还是可以看看。
2020-03-0531 - tt老师,通过看某些源代码来学习现代C++,看Boost库的,是一个好的开始不?
作者回复: 可以看自己感兴趣的实现。都看(太多了)没必要。另外,Boost很多库都是前C++11的,有些技巧现在已经不必要了,这点留意一下。
2020-01-201 - Ben吴老师,我希望分享一个踩坑经历。在mac brew 安装之后大概率要使用pkg-config 这个命令告诉编译器 Armadillo的位置。要不然安装之后cmake 找不到。
作者回复: 奇怪,我没有遇到类似问题…… 这是我在第 23 讲代码的 cmake 输出: -- Found Armadillo: /usr/local/include (found version "11.2.3") -- Found Boost: /usr/local/lib/cmake/Boost-1.78.0/BoostConfig.cmake (found version "1.78.0") -- Found GMP: /usr/local/include
2022-08-26归属地:上海 - weing老师,有推荐的C++ 内存池库吗? 想在C++代码里使用内存池进行内存管理
作者回复: 内存池基本上是一种定制的东西……我有计划补充一下这方面的内容。如果急着看这方面的内容的话,可以看一下我个人网站上的英文文章 http://wyw.dcweb.cn/
2022-02-11 - Sochooligan来了,来了。2020-01-20