Abseil Common Libraries (C++)
Abseil - C++ 常用库
本仓库包含 Abseil C++ 库代码。Abseil 是一个开源的 C++ 代码集合(符合 C++17 标准),旨在增强 C++ 标准库。
目录
关于 Abseil
Abseil 是一个开源的 C++ 库代码集合,旨在增强 C++ 标准库。Abseil 库代码来自 Google 自身的 C++ 代码库,经过了广泛的测试和生产使用,也是我们日常编码生活中依赖的代码。
在某些情况下,Abseil 提供了 C++ 标准中缺失的部分;在其他情况下,Abseil 提供了针对我们通过 Google 代码库使用发现的特殊需求的标准替代方案。我们会清楚地标明这些情况。
Abseil 的目标不是与标准库竞争;我们只是发现许多实用程序在我们代码库中发挥作用,现在我们希望将这些资源提供给整个 C++ 社区。
快速入门
如果您想开始使用,请务必至少执行 Abseil 快速入门。快速入门包含有关设置开发环境、下载 Abseil 代码、运行测试以及使简单二进制文件正常工作的資訊。
构建 Abseil
Bazel 和 CMake 是 Abseil 的官方构建系统。有关使用 Bazel 构建系统构建 Abseil 的更多信息,请参阅 快速入门。如果您需要 CMake 支持,请查看 CMake 构建说明 和 CMake 快速入门。
支持
Abseil 遵循 Google 的 基础 C++ 支持策略。有关当前支持的编译器、平台和构建工具列表,请参阅 此表格。
代码映射
Abseil 包含以下 C++ 库组件:
base
base库包含初始化代码和其他所有 Abseil 代码都依赖的代码。base中的代码可能不依赖于任何其他代码(除了 C++ 标准库)。algorithm
algorithm库包含对 C++<algorithm>库的补充以及此类算法的基于容器的版本。cleanup
cleanup库包含类似于控制流构造的类型absl::Cleanup,用于在作用域退出时执行回调。container
container库包含其他 STL 样式的容器,包括 Abseil 的无序“瑞士表”容器。crccrc库包含用于计算数据上的循环冗余校验的代码。debugging
debugging库包含用于启用泄漏检查以及堆栈跟踪和符号化实用程序的代码。flags
flags库包含用于处理使用 Abseil 构建的库和二进制文件的命令行标志的代码。hash
hash库包含哈希框架和 Abseil 中可哈希类型的默认哈希函数实现。log
log库包含LOG和CHECK宏以及用于将记录的消息写入磁盘、stderr或用户可扩展目标的工具。memory
memory库包含增强 C++<memory>库的内存管理功能。meta
meta库包含类似于 C++<type_traits>库中可用的类型检查。numeric
numeric库包含 128 位整数类型以及 C++20 的按位数学函数的实现。profiling
profiling库包含用于分析 C++ 实体的实用代码。它目前是 Abseil 其他库的私有依赖项。random
random库包含用于生成伪随机值的函数。status
status库包含错误处理的抽象,特别是absl::Status和absl::StatusOr<T>。strings
strings库包含各种字符串例程和实用程序。synchronization
synchronization库包含并发基元(Abseil 的absl::Mutex类,它是std::mutex的替代品)和各种同步抽象。time
time库包含用于计算绝对时间点、时间段以及在时区内格式化和解析时间的抽象。types
types库包含非容器实用类型。utility
utility库包含实用程序和帮助代码。
版本
Abseil 建议用户“实时更新”(尽可能频繁地更新到主分支的最新提交)。但是,我们意识到这种理念并不适用于所有项目,因此我们还提供了 长期支持版本,我们会为其回溯修复严重错误。有关更多详细信息,请参阅我们的 版本管理 文档。
许可证
Abseil C++ 库受 Apache 许可证条款的约束。有关更多信息,请参阅 LICENSE。
链接
有关 Abseil 的更多信息:
- 请参阅我们的 Abseil 介绍
- 阅读 为什么采用 Abseil,了解我们的设计理念。
- 浏览我们的 Abseil 兼容性保证,了解我们向您做出的承诺以及我们对您的期望。