abseil 1.20240116.2

abseil 1.20240116.2

Esun KimXiaoyi Zhang维护。



abseil 1.20240116.2

  • Abseil 团队

Abseil - C++ 常用库

仓库包含 Abseil C++ 库代码。Abseil 是一套开放的 C++ 代码集合(符合 C++14),旨在增强 C++ 标准库。

目录

关于 Abseil

Abseil 是一套开放的 C++ 库代码集合,旨在增强 C++ 标准库。Abseil 库代码源自谷歌自己的 C++ 代码库,经过广泛测试并在生产中使用,这是我们日常编码生活中所依赖的相同代码。

在某些情况下,Abseil 补充了 C++ 标准中缺失的部分;在其他情况下,Abseil 提供了特殊的替代方案以满足我们在 Google 代码库中使用中发现的需求。我们将在提供的库代码中明确指出这些情况。

Abseil 并非旨在成为标准库的竞争对手;我们只是发现许多这些实用工具在我们的代码库中很有用,现在我们希望将它们作为资源提供给整个 C++ 社区。

快速入门

如果您想开始使用,请确保至少运行一下 Abseil 快速入门。快速入门包含有关设置您的开发环境、下载 Abseil 代码、运行测试以及使一个简单的二进制文件工作等信息。

构建 Abseil

BazelCMake 是 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 库包含 LOGCHECK 宏以及将日志消息写入磁盘、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::Statusabsl::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 的更多信息