关于 C++,不论是其长达 40 年的发展历史,或者 C++ 是高级还是低级编程语言的争论等等,这些内容都已老生常谈。如果你对 C++ 库有所研究,不用我多说,大家也都心中有数。C++ 库的发展已久,积累了多种多样的程序库,让现代系统开发如虎添翼。对个别 C++ 库,大家估计已有所了解,甚至可能清楚地知道它们的奇特之处。
不过,正因为 C++ 历史悠久,社区力量庞大,资源多而杂,让人眼花缭乱。因此,所以选择正确的 C++ 库是个不小的挑战。当然,本文的目的不是深入研究各个 C++ 库,而是向大家介绍我认为在目前以及未来会发挥重要力量的程序库。
C++ 标准库 – 精华中的精华
一提到 C++ 标准库,马上就会想到 STL。作为 C++ 标准语言的一部分,C++ 标准库不仅是编程语言,更是标准的程序库资源,且由国际标准化组织(ISO)监督制定。点击链接,可以直接找到目前最新的 C++ 版本及其标准库。
不容错过的 13 个顶级 C++ 程序库
FileSystem 库,则提供了对文件系统及其组件(如路径、目录和常规文件)执行操作的工具。在 C++ 14 中,这个库还只是试验性的产品,而到 C++ 17,则成为了标准库的一部分。准确地说,命名空间由 std::experimental::filesystem 变成了 std::filesystem。 使用标准库内的工具总是最好的,因为行为可以在不同平台得到广泛地定义,只要平台支持 C++。
那么,STL 呢?标准模板库是处理容器、迭代器和算法的标准库子集。STL 是一个通用库,帮助用现代高效算法管理数据集合。我认为 C++ 标准库,包括 STL,都是 C++ 程序员的日常必备。
OpenCV
关于 Open CV,我只有赞美之词(可参考之前的博客《CMake、OpenCV 和单元测试》)。用于图像处理和计算机视觉的 C++ 库不计其数,但都比不上 OpenCV 的通用性。OpenCV 具有实时的计算机视觉、机器学习和用于人脸识别、目标检测和 3D 模型提取的深度学习库。OpenCV 库成熟、完善,拥有 Apache 开放源码许可。
oneAPI Threading Building Blocks
Threading Building Block 库现在是开源的,并更名为oneAPI Threading Building Blocks (oneTBB)。这个程序库可帮助并行 C++ 程序,充分利用多核处理器,这些处理器便携、易于组合且具有发展潜力。OneTBB 也提供 Apache 开放源码许可,具体信息可查看链接。
Tensorflow
除非你在过去五年与世隔绝,否则你肯定听说过 Tensorflow。这是一个用 C++ 编写的机器学习框架,包括杰出的 C++ 库资源,可用于开发机器学习模型中的许多常见任务。Tensorflow 最初是由 Google Brain 团队的研究人员开发的,他们当时负责研究机器学习和深层神经网络问题。Tensorflow 有一个开放源码 Apache 2.0 许可,点击链接可以获取。
当然,很多其他优秀的程序库(比如 GTK+、WxWidgets、Vulcan、ATL、JUCE、HandBrake 等等),我还来不及介绍。
不管你是需要 GUI、机器学习、数学函数、音频、公共类,还是你能想到的任何门类,我都已经竭尽所能把最顶级的 C++ 程序库资源分享给大家了,希望能有所帮助。
C++ 万岁!?