【C++】Boost开发指南阅读感想

我找了半天的windows下的markdown编辑器,最后发现vs code就是最好的万能编辑器!其他win编辑器的短板:公式都能打。

Boost是C++的准标准库,极大丰富了C++的功能,其中有一些部分会在以后纳入C++标准库,学了有好处。
之前用Qt5作为项目框架,比较了下qt5和boost,发现qt5某种意义上也是一个“boost”,提供了C++很多扩展功能,所以这里也放进来比较一下。

第1章 Boost程序库总论

无评论

第2章 时间与日期

看看就好,看评论是不怎么使用。C++11提供了std::chrono作为时间库。Qt5提供了更好用的日期api。

第3章 内存管理
  1. 智能指针已经放入标准库,比如std::unique_ptr,std::shared_ptr,std::weak_ptr。直接使用标准库智能指针就好。
  2. boost内存池听说很多项目也在用,api用起来相对简单。其中议论较多的是pool.order_malloc的连续内存分配效率,有一些评论反映这个api分配内存效率不行,需要换成一次性分配大块内存,可以保留一定的分配冗余:boost::pool<> m_pool(CHUNK_SIZE)。此外内存池的分配溢出需要单独考虑。
第4章 实用工具
  1. noncopyable类禁止拷贝,将拷贝函数放到private也能实现同样的功能。
  2. auto关键字已经加入标准库,模板推导等也已经加入标准库,直接使用标准库即可。
  3. boost的swap,assign没有什么大用。
  4. 剩下的内容对于非高级项目,不是特别有用。
第5章 字符串与文本处理
  1. boost提供了丰富的字符串处理api,可直接使用到std::string。Qt5提供了更加丰富的字符串处理api,而且直接就是任意文字编码,更好用,但是只能用在QString上。
第6章 正确性测试

无评论,其他测试工具库有很多。

第7章 容器与数据结构
  1. std::array,哈希/散列容器std::unordered_set, std::unordered_map均已加入标准库。Qt也做了同样的容器。
  2. std::tuple三元数据,已经加入标准库。
  3. 其他类型的容器我认为不如自己造轮子或者用专业的第三方库。
第8章 算法

有价值的内容不多。

第9章 数学与数字
  1. 为何不用更专业的数学库?比如Eigen,无需编译即可用,是我的主要项目库;CGAL;Armadillo;GSL。
  2. 随机数api已经加入标准库,满足各种数学概率分布的随机数api都有。
第10章 操作系统相关
  1. 对于系统操作能够跨平台用统一的代码实现,值得了解。此外Qt5也能够跨平台实现操作系统相关操作,比如任意操作系统下,遍历目录就一句代码。
第11章 函数与回调
  1. std::function,std::bind,已经加入标准库。
  2. signals2线程安全,不用signal库;主要用于实现信号槽建立,功能解耦合。signal2触发是同步的,不能异步。signal2尚未加入标准库。Qt5的信号槽功能更加好用,线程安全而且可以异步。
第12章 并发编程
  1. 线程库已经加入标准库,直接使用。
  2. qt5也实现了多线程库,并且信号槽与线程库无缝对接,异步执行任务的线程结束后回调主线程的函数这一功能非常适合GUI编程。
  3. asio尚未加入标准库,用于并发编程,可以同时使用协程和多线程,包装了socket api。可以用于构建网络项目,相对好用,评价较高。asio有独立于boost的项目。
第13章 编程语言支持

无评论

第14章 其他Boost组件
  1. 正则表达式,需要编译,qt5也有。
  2. 图像库,不如搞个opencv。如果仅仅是读取图像,qt5直接使用qimage类即可。
  3. graph,数学上的图论数据结构,据说有工业级强度很好用。
  4. range,现在C++11可以直接使用新的for语句 for(auto &it:container) {…}
  5. 匿名函数已经加入标准库。
  6. 模板元,常人用不到,一些模板编程功能已经加入标准库。
  7. serialization序列化,和protobuf一样的功能,优点是能够序列化stl容器。实用性还可以。
结束语

工具是拿来用的,哪个好用用哪个。
注重问题、解决方法和业务。
用好的开发工具,纯命令行并不好。
不考虑很高的效率,qt5可以取代boost很多功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值