面试之Boost

Boost常用的库很多都已经被包含到C++11、C++14或者C++17中了。

这里还是按照Boost程序库完全开发指针的目录结构进行总结。

常用功能库:

关于时间的 chrono库, 已被加入C++11标准。
关于随机数的random库,已被加入C++11标准。
关于正则表达式的regex库,已被加入C++11标准。

内存管理:

包括智能指针
scoped_ptr, 对于C++11中的unique_ptr。
shared_ptr, 已被加入C++11标准。
weak_ptr,已被加入C++11标准。
scoped_array
shared_array
scoped_array/shared_array是scoped_ptr/shared_ptr对动态数组的扩展,它们为动态数组提供了可自动删除的代理,shared_array比scoped_array有更多的用途,但我们应该使用vector和shared_ptr,除非程序对性能有非常苛刻的要求。

使用工具:

noncopyable,允许程序轻松实现一个禁止拷贝的类。它将拷贝构造函数和拷贝赋值函数设置为private,禁止进行拷贝和赋值。将默认构造函数设置为protected,禁止直接产出无意义的noncopyable对象。

ignore_unused,使用可变参数模板,可以支持任意数量、任意类型的变量,把它们作为函数的参数“使用”了一下,达到了与(void)var完全相同的效果。但它的命名更清晰,写法更简单,而且由于是inline函数,完全没有运行时的效率损失。

uuid, 用来生成全局唯一的UUID。

容器与数据结构:

定长数组类array,已被加入C++11标准。
散列容器(无序关联容器)unordered_set、unordered_mulitset、unordered_map、unordered_multimap,已被加入C++11标准。
环形缓冲区circular_buffer
元组tuple,已被加入C++11标准。
any,用来容纳任何类型的元素。 已被加入C++17标准。

函数与回调:

ref库,定义了一个很小很简单的引用类型的包装器,可以用来进行引用传递。 已被加入C++11标准。
bind库,是对C++98标准中函数适配器bind1st/bind2nd的泛化和增强,可以适配任意的可调用对象,包括函数指针,函数引用,成员函数指针和函数对象。已被加入到C++11标准。
function是一个函数对象的“容器”,概念上像是C/C++中函数指针类型的泛化,是一种“智能函数指针”。它以对象的形式封装了原始的函数指针或函数对象,能够容纳任意符合函数签名的可调用对象。因此可以被用于回调机制,暂时保管函数或函数对象,在之后需要的时机再调用,使回调机制拥有更多的弹性。 已被加入到C++11标准。

并发编程:

atomic实现原子操作。它封装了不同计算机硬件的底层操作原语,提供了跨平台的原子操作功能,让我们完全摆脱并发编程读写变量的困扰。

thread库实现了操作系统里的线程表示,赋值启动和管理线程对象。
asio库基于前摄器模式封装了操作系统的select、kqueue、poll/epoll、overlapped I/O 等机制,实现了异步IO模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值