posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Boost和C++1x最值得学习的库概览

Posted on 2019-11-08 18:05 魔のkyo 阅读(702) 评论(0)  编辑 收藏 引用 所属分类: STLC++
Boost库分两种
header-only的 和 header + lib的
大多数都是header-only的,直接包含头文件就可以用。header + lib由一组头文件和一个库文件构成,可以自己用下载下来的代码编译出库文件或者直接在网上下载对应版本编译好的库。
需要连接lib的有以下库:
Boost.Chrono 已经标准化 std::chrono C++11
Boost.Context C++的协程支持(Coroutine)
Boost.Filesystem 已经标准化 std::filesystem C++17 处理文件和路径的
Boost.GraphParallel 是Boost.Graph库的扩展,为了支持并行和分布式计算,包含一些图算法
Boost.IOStreams IO流,我觉得最大的特点是可以通过filter进行zlib, gzip 和 bzip2的压缩和解压
Boost.Locale 本地化库,最主要是解决字符编码转换的问题,还有些日期货币格式转换
Boost.Log 日志库
Boost.MPI 用于分布式计算中的消息传递
Boost.ProgramOptions 读取 命令行参数 或 配置文件
Boost.Python 和pyhon的交互框架
Boost.Regex 已经标准化std::regex C++11
Boost.Serialization 序列化
Boost.Signals 信号槽模式的一个实现
Boost.Thread 已经标准化std::thread C++11
Boost.Timer 计时器,可以用std::chrono::high_resolution_clock自己实现,所以没必要
Boost.Wave C++预处理器,似乎是为了方便编写一些对C++代码进行预处理的代码
以上被标记为红色的我觉得比较有用,可以学习一下,此外包括header-only的一些库,很多都已经被标准化,这些被标准化的往往是比较有用的,我找了了一下大概有下面这些:
<functional> std::bind / std::function / std::ref / std::cref
<type_traits> std::is_pod / std::is_base_of / std::enable_if / std::result_of / auto / decltype
数组封装 std::array 和vector比固定大小,和原生[]数组比不会退化为指针,有迭代器
任意类型 std::any
可选类型 std::optional / std::nullopt
正则表达式 std::regex
编译时分数 std::ratio
指针增强 std::shared_ptr / std::weak_ptr / std::unique_ptr
n元组 std::tuple / std::make_tuple / std::get
多线程和锁 std::thread / std::mutex / std::lock_guard / std::unique_lock / std::atomic
时钟 std::chrono::high_resolution_clock / std::chrono::system_clock / std::chrono::steady
HASH表 std::unordered_map / std::unordered_set / std::hash
静态断言 static_assert
我把相关联的东西合并在了一行,这些可以说是C++1x新标准最值得学习的内容。
只有注册用户登录后才能发表评论。