6个版本
0.2.0 | 2020年4月7日 |
---|---|
0.1.4 | 2020年4月5日 |
#2415 in 数据结构
每月27次下载
50KB
842 行
一种基于哨兵的、无内存堆的、类似Vec
的类型。
数组很棒,因为它们不需要分配。但是数组是固定大小的。
切片很棒,因为你可以使它们更小。但是切片不是Sized
。
向量很棒,因为你可以使它们更大。但是向量需要分配。
此类型提供了一种类似向量的类型,但其表示方式与数组完全相同。与其它基于数组的类似向量类型不同,但与C风格字符串和数组类似,Arrav
使用哨兵值来指示未占用的元素。这使得push
和pop
稍微慢一些,但避免了需要单独存储长度。这种权衡是哨兵值不能再存储在数组中。
Arrav
适用于当你有一个小但可变的、需要紧凑存储的小值数时(例如,因为它们将被存储在大量元素中)。这也是为什么在实际情况中,“搜索”哨兵值以确定数组长度(以及push
和pop
)不太可能成为问题。
与使用NULL
作为哨兵的C风格字符串和数组不同,Arrav
使用类型的最大值(如std::u8::MAX
)。这意味着除非你正在饱和类型的范围,否则你甚至不会注意到哨兵。
许可
根据以下之一许可
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确说明,否则根据Apache-2.0许可定义的、你有意提交以包含在作品中的任何贡献,将双重许可如上所述,没有任何附加条款或条件。