主要观点:作者对 C++标准库不满,认为其存在诸多问题,于是尝试用 C++的特性构建一个全新的库“best”,介绍了“best”库的各个部分,包括基础类型、代数数据类型容器、内存和指针、迭代器、堆容器、文本处理、格式化、反射以及单元测试和应用等,并阐述了未来的计划。
关键信息:
- “best”库抛弃了 C++的
<type_traits>
,将类型特征分类到不同的头文件中。 - 构建了基本的代数数据类型,如“best::row”和“best::choice”,替代了
std::tuple
和std::variant
。 - 提供了新的迭代范式,类似于 Rust 的
Iterator
。 - 实现了多种堆容器,如
best::vec
、best::table
等。 - 字符串处理类似 Rust,提供了多种文本编码。
- 有 Rust 风格的格式化库
best::format
。 - 包含基本的反射功能。
- 有单元测试框架和 CLI 解析库。
重要细节: std::unordered_map
必须是封闭寻址的链表数组映射,std::map
必须是红黑树。std::optional
使用起来很麻烦,std::variant
也很烦人。std::filesystem
有很多尖锐的边缘问题,标准算法因为处理迭代器对而非常冗长。best::ptr<T>
是通用的指针类型,提供了许多与 Rust 原始指针类似的操作。best::iter
提供了各种助手函数,用于适配迭代器或消费迭代器中的项。best::vec
可以自定义分配器类型和小向量优化类型。best::table
是通用的哈希表实现。best::text
系列类型用于文本处理,支持多种编码。best::format
通过编译器扩展在编译时检查格式。best::reflect
提供了基本的反射功能,通过BestReflect
FTADLE 来 introspect 结构体和枚举的成员。- 单元测试框架通过定义特殊的全局变量来实现,CLI 解析库通过 reflectable 结构体来定义 CLI 标志。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。