Skip to content

Latest commit

 

History

History
50 lines (31 loc) · 1.92 KB

vec.md

File metadata and controls

50 lines (31 loc) · 1.92 KB

Table of Contents generated with DocToc

集合容器

集合容器,是把一系列拥有相同类型的数据放在一起,统一处理

  • 字符串 String、数组 [T; n]、列表 Vec 和哈希表 HashMap 等;
  • 切片 slice
  • 循环缓冲区 VecDeque、双向列表 LinkedList 等

切片

切片是描述一组属于同一类型、长度不确定的、在内存中连续存放的数据结构,用 [T] 来表述。因为长度不确定,所以切片是个 DST(Dynamically Sized Type)。

  • &[T]:表示一个只读的切片引用。
  • &mut [T]:表示一个可写的切片引用。
  • Box<[T]>:一个在堆上分配的切片。

img.png

特殊的切片:&str

img.png

String、&String、&str

  • String 在解引用时,会转换成 &str

数组[T; n] 、列表 vec、字符串 String 以及它们的切片关系

img.png

切片的引用 &[T] 和堆上的切片Box<[T]>

Box<[T]> 和切片的引用 &[T] 也很类似:它们都是在栈上有一个包含长度的胖指针,指向存储数据的内存位置。区别是:Box<[T]> 只会指向堆,&[T] 指向的位置可以是栈也可以是堆;此外,Box<[T]> 对数据具有所有权,而 &[T] 只是一个借用。

img.png

img.png