Abseil - C++ 常用库
仓库包含 Abseil C++ 库代码。Abseil 是一套开放的 C++ 代码集合(符合 C++14),旨在增强 C++ 标准库。
目录
关于 Abseil
Abseil 是一套开放的 C++ 库代码集合,旨在增强 C++ 标准库。Abseil 库代码源自谷歌自己的 C++ 代码库,经过广泛测试并在生产中使用,这是我们日常编码生活中所依赖的相同代码。
在某些情况下,Abseil 补充了 C++ 标准中缺失的部分;在其他情况下,Abseil 提供了特殊的替代方案以满足我们在 Google 代码库中使用中发现的需求。我们将在提供的库代码中明确指出这些情况。
Abseil 并非旨在成为标准库的竞争对手;我们只是发现许多这些实用工具在我们的代码库中很有用,现在我们希望将它们作为资源提供给整个 C++ 社区。
快速入门
如果您想开始使用,请确保至少运行一下 Abseil 快速入门。快速入门包含有关设置您的开发环境、下载 Abseil 代码、运行测试以及使一个简单的二进制文件工作等信息。
构建 Abseil
Bazel 和 CMake 是 Abseil 的官方构建系统。有关使用 Bazel 构建系统的更多信息,请参阅 快速入门。如果您需要 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 的无序 "瑞士表" 容器。crc
crc
库包含用于在数据上计算错误检测循环冗余校验的代码。debugging
debugging
库包含用于启用内存泄漏检查、堆栈跟踪和符号化工具的代码。flags
flags
库包含处理使用 Abseil 构建的库和二进制文件的命令行标志的代码。hash
hash
库包含哈希框架和 Abseil 中可哈希类型的默认哈希算子实现。iterator
iterator
库包含用于增强基于范围的 for 循环的实用工具。log
log
库包含LOG
和CHECK
宏以及将日志消息写入磁盘、stderr
或用户可扩展目的地的工具。memory
memory
库包含增强 C++ 的<memory>
库的内存管理功能。meta
meta
库包含与 C++14 和 C++17 版本的 C++<type_traits>
库中的类型检查相兼容的版本。numeric
numeric
库包含 128 位整数类型以及 C++20 的位运算函数的实现。profiling
profiling
库包含用于性能分析的实用代码。它目前是其他 Abseil 库的私有依赖。random
random
库包含生成伪随机值的功能。status
status
库包含错误处理的抽象,特别是absl::Status
和absl::StatusOr<T>
。strings
strings
库包含各种字符串函数和实用工具,包括与 C++17 的std::string_view
类型兼容的 C++14 版本。synchronization
synchronization
库包含并发原语(Abseil 的absl::Mutex
类,是std::mutex
的替代品)以及多种同步抽象层。time
time
库包含用于计算绝对时间点、时间间隔以及在不同时区内格式化和解析时间的抽象。types
types
库包含非容器实用类型,如与 C++17 的std::optional
类型兼容的 C++14 版本。utility
utility
库包含实用和辅助代码。
发布版本
Abseil 推荐用户采用“实时跟踪头部”的策略(尽可能频繁地将主分支的最新提交更新到本地)。然而,我们也意识到这种策略并不适用于所有项目,因此我们还提供长期的支持版本,我们将严重错误的修复回滚到这些版本。更多详细信息,请参阅我们的版本管理文档。
许可证
Abseil C++ 库根据 Apache 许可证的条款进行授权。更多信息请参阅LICENSE。
链接
有关 Abseil 的更多信息
- 参阅我们的Abseil 简介
- 通过为何选择 Abseil 了解我们的设计理念。
- 参阅我们的Abseil 兼容性保证 了解我们向您承诺的内容以及我们对您的期望。