数组 | 动态数组 | |
---|---|---|
类型 | array | Vec(Vector),向量 |
作用 | 存储同一类型的多个值 | 存储同一类型的多个值 |
表示 | 数组表示成[T; N],由中括号括起来,中间用分号隔开,分号前面表示类型,分号后面表示数组长度。 | Vec<类型> |
特点 | 数组是固定长度的,也就是说在编译阶段就能知道它占用的字节数,并且在运行阶段,不能改变它的长度(尺寸) | 容量可在程序运行的过程中动态地扩大或缩小,但是在编译期间不知道容量大小 |
访问 | 使用下标访问 | 使用下标访问 |
代码定义例子 | let a: [i32; 5] = [1, 2, 3, 4, 5]; let a = [1, 2, 3, 4, 5]; | let v: Vec = Vec::new(); let v = vec![1, 2, 3]; |
数组和动态数组做出区分的原因是:Rust 语言在设计时就要求适应不同的场合,要有足够的韧性能在不同的场景中都达到最好的性能。因为固定尺寸的数据类型是可以直接放栈上的,创建和回收都比在堆上动态分配的动态数组性能要好。
是否能在编译期计算出某个数据类型在运行过程中占用内存空间的大小,这个指标很重要,Rust 的类型系统就是按这个对类型进行分类的。
我是知识星球上约有3万人的AI破局俱乐部初创合伙人,我的微信号是zhaoseaside
,欢迎大家加我,相互学习AI知识和个人IP知识,毕竟这是未来两大风口。