AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
vec!宏加数组直接量可以初始化向量类型 let mut v = vec!\[2,3,5\]; let v2 = vec!\[0;m\*n\]; vec!宏和Vec::new创建向量再添加元素是相同的。 其他类型的方法可以创建向量, let v:Vec = (0...5).collect(); 这里需要显示指定类型,因为collect方法可以创建许多集合类型,不仅仅是向量。 和数组一样,切片的所有方法也可以用于向量。调用的时候会隐式转换成切片再调用。 向量由3部分组成,一个指向堆空间的指针,一个数字表示向量的容量,一个数字表示实际长度。当长度达到容量的时候,往向量里插值会触发空间扩容(新申请堆内存,并且拷贝元素到新内存里,更新指针指向,释放旧空间)。如果你知道一个向量需要存储多少元素,可以用Vec::with\_capacity创建向量,指定初始容量,向量的capacity()方法返回向量的容量大小,即使用with\_capacity创建一个指定容量的向量,实际容量也可能和指定的不一致,系统堆内存分配器可能会适当调整(增加)容量。 往向量里添加元素可能出发内存扩容,可能会比较耗时,特别是向量比较长的时候。 pop方法从末尾弹出一个元素,返回Option类型,如果向量为空,则返回None。 向量可以用for in语句迭代 向量是标准库提供的类型,不是语言内置的类型。 无论何时向量扩展容量,它总是创建一个旧容量的2倍长度来扩展,所以容量是初始容量的2的n次方倍。