Boost
本专栏涉及书籍:Boost程序库完全开发指南――深入C++”准”标准库(第5版),集中了自己的心得体会,希望对大家有帮助
ve2102388688
这个作者很懒,什么都没留下…
展开
-
Boost C++ assert的用法简析
assert的用法简析1 软件验证、测试宏assert2 assert运行时断言2.1 禁用BOOST_ASSERT2.2 自定义assert?3 static_assert编译时检查4 static_assert和assert5 lightweight_test提供最基本的单元测试功能6 test组件1 软件验证、测试宏assertC/C++本身仅提供了有限的软件验证、测试宏assert,而Boost.assert库增强了assert库,包含如下的组件assert —>运行时检查st原创 2020-12-21 20:29:54 · 1202 阅读 · 0 评论 -
Boost C++测试组件test库
Boost测试组件test1 boost::test简介和基本概念二级目录三级目录1 boost::test简介和基本概念test库用于单元测试、命令行测试组件,全称Unit Test Framework(UTF)二级目录三级目录原创 2020-12-18 20:22:39 · 3139 阅读 · 3 评论 -
Boost实用工具之如何简单、高效初始化assign
这里写简单、高效初始化1 如何给容器初始化、赋值大量数据?2 list_inserter容器赋值(先创建空的,再赋值)2.1 operator,2.2 operator+=3 generic_list容器构造时填充数据1 如何给容器初始化、赋值大量数据?这个问题,其实解决办法很普通。比如,重复调用push_back()、insert()等函数,或者使用初值列语法。但是我们希望有更高效的大量数据初始化的方法assign下有两个重要的类,分别负责不同的场景list_inserter容器赋值(先创建原创 2020-12-09 14:33:53 · 384 阅读 · 1 评论 -
Boost实用工具之如何表示无效值optional
表示无效值1 在C++中如何表示无效值?231 在C++中如何表示无效值?无效值?答:可以理解成不是我们希望的值,或者说返回值是位于解空间外的值。比如,我们希望除法分母不为0,开平方不能小于0等等如何表示无效值?答:下面是我们常见的手法发现错误,就抛出异常为无效值增加“哨兵”,比如NULL23...原创 2020-12-07 20:51:24 · 694 阅读 · 0 评论 -
C++ shared_ptr用法、简析、案例
shared_ptr用法1 shared_ptr简介2 shared_ptr案例2.1 reset()的理解2.2 make_shared的理解2.3 shared_ptr中的指针转型问题2.4 shared_ptr在容器中的应用2.5 定制删除器D2.5.1 shared_ptr管理FILE文件指针2.5.2 shared_ptr管理socket2.5.3 shared_ptr 高级用法2.6 关于桥接方式--减少文件的依赖关系,减少编译时间2.7 借shared_ptr我们分享下别名构造函数原创 2020-12-04 19:46:41 · 6959 阅读 · 0 评论 -
Boost中object_pool使用案例及让construct()支持任意参数模板
object_pool使用案例1 简介Boost::object_pool1 简介Boost::object_pool原创 2020-12-04 15:15:20 · 836 阅读 · 0 评论 -
Boost内存管理总结(scoped_ptr、unique_ptr、shared_ptr、weak_ptr、intrusive_ptr、pool、object_pool、singleton_pool)
内存管理总结1 简要介绍2 思维导图1 简要介绍Boost的内存管理库,包含两部分内容,分别是smart_ptr库和pool库,其中我们熟知的shared_ptr、unique_ptr、weak_ptr早已在2011年引入C++11标准。smart_ptr库包含scoped_ptr、unique_ptr、shared_ptr、weak_ptr、intrusive_ptrpool库包含pool、object_pool、singleton_pool2 思维导图下面是Boost中内存管理思维图,包原创 2020-12-03 11:30:05 · 449 阅读 · 0 评论 -
C++ std::swap的设计方法与规则简析
swap1 很高兴分享,上一节遗留下swap问题2 缺省的内置std::swap的问题?3 pimpl手法下的类(模板)提高swap的速率4 分析weak_ptr中swap4.1 开始的时候为什么不调用std::swap?4.2 STEP3和STEP4调用的swap该如何理解呢?4.3 STEP3为什么要明确指定std::swap?4.4 再谈第一步STEP1?5 结论1 很高兴分享,上一节遗留下swap问题下面就简单分享下自己的想法,更详细的可以参考更专业的书籍。2 缺省的内置std::swap的问原创 2020-11-26 19:01:29 · 2131 阅读 · 0 评论 -
C++ weak_ptr用法和简析(最后是Boost对应的源码,我会提及一些哈)
weak_ptr用法1 weak_ptr简介2 weak_ptr使用模板3 weak_ptr打破循环引用1 weak_ptr简介weak_ptr是为了配合shared_ptr而引入的智能指针,作用:弥补shared_ptr的不足,解决循环引用的问题weak_ptr只是一个辅助,当然能力就很弱啦,不具有普通指针的功能,如解引用*和箭头运算符->作为一个旁观者,只能观察,构造和析构都不会改变引用计数器值行为也像一个软连接(快捷方式),如果真正的被删了,那么weak_ptr就失效了(快捷方式无效原创 2020-11-25 20:21:02 · 1290 阅读 · 1 评论 -
Boost中intrusive_ptr使用案例
intrusive_ptr使用案例1 简介Boost::intrusive_ptr2 Demo13 Demo 24 内部部分API简要的实现1 简介Boost::intrusive_ptr总体上讲:Boost::intrusive_ptr和shared_ptr功能上几乎是一致,唯一不同的是,计数器递增、递减可以由用户自定义。// 递增计数器,注意:函数名是内置,必须写这个名字!!!void intrusive_ptr_add_ref(T *p).// 递减计数器,注意:函数名是内置,必须写这个名原创 2020-11-25 19:24:19 · 633 阅读 · 0 评论 -
Boost 时间和日期总结
时间和日期总结1 今天分享Boost库关于时间和日期的相关知识1 下面是我自己做的思维导图,希望能帮助你1 今天分享Boost库关于时间和日期的相关知识Boost时间和日期库有两大核心,第二部分是核心boost::timer : 适合要求不高的计时场景。最高精度和操作系统有关date_time : 适合绝大部分任务需求,里面又分两个核心:日期(gregorian)+时间(posix_time)。其实还有一个local_time(处理全世界各地时间,这里就不提了)1 下面是我自己做的思维导图,希原创 2020-11-21 20:13:02 · 433 阅读 · 1 评论 -
利用Boost库实现高精度计时器(1us)
Boost库实现高精度时间1 关于Boost2 一个特别之处3 高精度计时器4 简析1 关于BoostBoost库代表C++语言最新、最前沿的技术;C++中语言特性有2/3来自BoostBoost组件有很高的工业强度,甚至超过大多数商业产品Boost可以用于任何用途,鼓励商业,非商业用途,不受任何限制2 一个特别之处Boost库没有传统的.cpp和.h,特使用.hpp,是不需要链接的,直接把头文件放入工程就可以编译使用了。不再需要考虑动态库的问题。当然还有少部分是需要链接的。3 高精度计时原创 2020-11-20 19:39:16 · 1033 阅读 · 0 评论