VecDeque
是 Rust 标准库中提供的一个使用可增长的循环缓冲区实现的双端队列。
你可以只使用 push_back()
函数从末端插入,使用 pop_front()
函数从前端删除,这样就是一个普通队列。
VecDeque
不可以在代码中直接使用,需要 use std::collections::VecDeque;
。
VecDeque
原型如下:
1 | pub struct VecDeque<T, A = Global> |
这篇文章只会介绍几个基础用法,用以入门,详细内容请看官方文档 VecDeque in std::collections - Rust。
1. 新建 VecDeque
新建 VecDeque 主要有两种方式:
1. 创建一个空的 VecDeque;
2. 从现有元素创建一个 VecDeque。
下面通过代码来看:
1 |
|
2. 更新 VecDeque
2.1. 插入元素
1 | pub fn push_back(&mut self, value: T) |
1 | pub fn push_front(&mut self, value: T) |
push_back()
在队尾插入元素。
push_front
在队头插入元素。
2.2. 删除元素
1 | pub fn pop_back(&mut self) -> Option<T> |
1 | pub fn pop_front(&mut self) -> Option<T> |
pop_back()
删除队尾的元素,返回 Option<T>
,即返回被删除的元素或返回 None
。
pop_front()
删除队头元素,返回 Option<T>
,即返回被删除的元素或返回 None
。
3. 访问 VecDeque
3.1. 获取队头元素
1 | pub fn front(&self) -> Option<&T> |
1 | pub fn front_mut(&mut self) -> Option<&mut T> |
front()
和 front_mut()
函数都可以获取队头元素,front()
返回 Option<&T>
,front_mut()
返回 Option<&mut T>
,即你可以通过 front_mut()
修改队头元素,但 front()
不可以。
下面通过两段代码看这两个函数的用法:
1 |
|
1 |
|
3.2. 获取队尾元素
1 | pub fn back(&self) -> Option<&T> |
1 | pub fn back_mut(&mut self) -> Option<&mut T> |
back()
和 back_mut()
函数都可以获取队尾元素,back()
返回 Option<&T>
,back_mut()
返回 Option<&mut T>
,即你可以通过 back_mut()
修改队尾元素,但 back()
不可以。
下面通过两段代码看这两个函数的用法:
1 |
|
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GuKaifeng's Blog!
评论(延迟加载 / 需要可访问 GitHub Issues)