C++ 是一门强大的编程语言,提供种类繁多的库来帮助开发者构建高效的软件。这些库涵盖各种领域,包括通用编程、图形、网络、数据库等等。
当您需要在 C++ 项目中使用某个库时,首先要问的问题是它是否符合您的需求。选择库可能有风险,尤其是当有许多相互竞争的选项时。错误的选择可能会让开发团队浪费许多小时的工作。
1- 许可证
库的许可证是首先要检查的东西。在进一步探索其功能之前,必须验证该许可证与您的项目兼容。
2 - 这个库能满足您的需求吗?
检查库是否真正满足您的需求也很重要。令人惊讶的是,许多开发者最初被库的功能列表、教程或网络研讨会所说服,却在构建了一个小型概念验证之后才发现该库不适合他们的项目。
3 - 社区活跃吗?
使用库时可能会遇到许多问题。最能帮助您解决这些问题的,往往是其社区成员或库的维护者。因此,明智的做法是选择一个社区活跃的库;否则,您可能要花好几天时间独自解决问题。
4- 文档
使用文档完善的库可以为您节省大量时间。相反,糟糕的文档甚至会让简单的任务变得不必要地耗时。
5 - 您关心性能吗?
选择库时,性能并不总是首要考虑因素,在这种情况下您可以跳过这一步。然而,如果性能对您的项目很重要,请查看可用的基准测试,并最好构建一个概念验证,在做决定之前了解该库的行为。
让我们来看看最流行的 C++ 库:
1 - STL
STL 是一组模板类和函数的集合,提供常用的数据结构(如向量、列表、队列和栈)和算法(如排序和查找)。它是 C++ 不可或缺的一部分,因其泛型编程能力而被广泛使用。
2 - Boost
Boost 是一组经过同行评审的高质量库,扩展了 C++ 的功能。这些库涵盖广泛的领域,包括智能指针、正则表达式、多线程、网络等。许多 Boost 库已被提议纳入标准化,有些已经成为 C++ 标准库的一部分。
3 - Folly
Folly(Facebook 开源库的松散缩写)是一个以实用性和效率为设计理念的 C++17 组件库。Folly 包含多种在 Facebook 内部广泛使用的核心库组件。特别是,它常常是 Facebook 其他开源 C++ 项目的依赖,也是这些项目共享代码的地方。
4 - Qt
Qt 是一个简化 GUI(图形用户界面)开发的跨平台应用框架。它提供了一组用于创建桌面、移动和嵌入式应用的库和工具。Qt 以其易用性和灵活性著称。
5 - Poco
Poco 是一组 C++ 类库,可简化并加速以网络为中心的便携式应用的开发。它涵盖网络、文件系统和线程管理等领域。
6 - OpenCV
OpenCV 是一个计算机视觉库,为图像和视频处理提供广泛的工具和算法。它被广泛用于计算机视觉应用、机器人技术和机器学习。
7 - TensorFlow
TensorFlow 是一个端到端的开源机器学习平台。它拥有全面而灵活的工具、库和社区资源生态系统,让研究人员能够推动机器学习的最新进展,让开发者能够轻松构建和部署由机器学习驱动的应用。它最初由谷歌机器智能研究组织内 Google Brain 团队的研究人员和工程师开发,用于开展机器学习和深度神经网络研究,但该系统的通用性足以适用于各种其他领域。它的 C++ API 非常稳定,被许多大公司和开源社区使用。
8 - ATL
近二十年来,微软一直使用活动模板库(ATL)来构建 COM 对象。它的模板类提供了大量预构建的、可复用的 COM 功能。十年前,ATL 文档声称"ATL 是创建 ActiveX 控件最快、最简单的方式,也是创建 COM 对象最高效的方式"。ATL 至今仍被广泛使用,微软仍在维护它并添加新特性。
9 - Asio
Asio 是一个用于网络和底层 I/O 编程的跨平台 C++ 库,以现代 C++ 方式为开发者提供一致的异步模型。
10 - Eigen
Eigen 是一个用于线性代数的 C++ 模板库。它提供用于处理矩阵、向量和数值运算的类和函数。Eigen 以其性能和易于与其他库集成而著称。
我们通过查看 Google 和 Stack Overflow 的搜索结果,以及 GitHub 上的 C++ 仓库和其他开源 C++ 项目,选出了这些库。
Google 搜索结果:

Stack Overflow 问题结果:

如果您是初学者,我们建议首先掌握 STL。然后,根据您的具体需求,您可以从这个列表中选择一个库:
