《Rust编程入门》8.1 标准集合(Vec、HashMap、String等)
8.1 标准集合(Vec、HashMap、String 等)
Rust 提供了一些强大的标准集合类型,用于存储和操作不同类型的数据。常见的标准集合包括 Vec
、HashMap
、String
等,这些集合是 Rust 标准库中的核心组成部分,能够高效地处理动态数据结构。下面,我们将逐一介绍这些常用的数据结构。
8.1.1 Vec<T>
:动态数组
Vec
(全称:vector)是 Rust 中最常用的集合类型之一。它是一个动态数组,可以存储任意类型的数据,并且在运行时能够根据需要自动调整大小。Vec
提供了丰富的 API,可以方便地对其进行插入、删除、访问等操作。
创建和初始化 Vec
|
|
Vec::new()
创建了一个空的Vec
,我们可以通过push
方法向其中添加元素。- 在 Rust 中,
Vec
是类型安全的,我们在创建时需要指定它所存储的元素类型,如上例中的i32
。
访问 Vec
中的元素
|
|
v[0]
是直接通过下标访问元素的方式。如果访问一个不存在的元素(比如超出索引范围),会发生运行时 panic。get
方法更安全,它返回一个Option
类型,可以处理越界的情况,避免程序崩溃。
迭代 Vec
中的元素
|
|
&v
表示对Vec
的借用,迭代器会按引用访问元素,而不会消耗Vec
中的数据。- 使用
for
循环遍历Vec
中的元素是最常见的方式。
移除元素
|
|
pop
方法移除并返回Vec
中的最后一个元素。remove
方法移除指定位置的元素,并返回该元素。
8.1.2 HashMap<K, V>
:哈希表
HashMap
是一种键值对存储结构,允许你根据键来存储、检索和修改数据。它是通过哈希函数来管理键的映射,因此适合用于查找效率较高的场景。与 Vec
不同,HashMap
的键必须是可哈希的类型(实现了 Hash
特征),值可以是任意类型。
创建和初始化 HashMap
|
|
HashMap::new()
创建一个空的HashMap
,并通过insert
方法插入键值对。
访问 HashMap
中的元素
|
|
- 使用
get
方法可以安全地访问HashMap
中的元素,如果键不存在,返回None
。
遍历 HashMap
|
|
for (key, value) in &scores
语法可以遍历HashMap
中的所有键值对。
修改 HashMap
中的值
|
|
get_mut
方法返回一个可变引用,我们可以修改HashMap
中已有键的值。
8.1.3 String
:可变字符串
String
是 Rust 中一个用于存储可变字符串的类型,它是堆分配的,可以动态扩展。与字符串字面量(&str
)不同,String
是可以改变内容的。
创建和修改 String
|
|
String::from
用于从一个字符串字面量创建String
,push_str
可以向字符串添加其他内容,push
向字符串添加单个字符。
访问 String
中的字符
|
|
- 使用
chars
方法可以遍历String
中的字符(每个字符是一个 Unicode 标量值)。
字符串切片与借用
|
|
- 字符串切片允许我们从
String
中借用一部分数据,而不需要复制内容。
8.1.4 小结
Vec<T>
是一个动态数组,支持灵活的元素插入、删除和访问操作,适用于存储可变大小的数据。HashMap<K, V>
是一个哈希表,允许根据键快速查找、插入和删除值,适合用于键值对数据存储。String
提供了一个堆分配的可变字符串类型,可以方便地处理和修改字符串数据。
这些标准集合类型使得 Rust 在处理常见数据结构时,既高效又安全。在下一节中,我们将深入探讨 Rust 的迭代器和迭代器适配器,使得集合的操作更加灵活和高效。