在将中缀表达式转换为后缀表达式的上下文中,使用Shunting-yard算法。我想使用一个向量来存储输出,其中包含操作符和数字类型数据。
在使用Shunting-yard算法将中缀表达式转换为后缀表达式的过程中,我希望使用一个向量来存储输出结果,这个向量将同时存储操作符和数字类型的数据。
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum Operator {
Add,
Sub,
Mul,
Div,
}
fn main() {
let mut output: Vec<String> = Vec::new(); // create an output vector
let a = 2;
let b = Operator::Add;
let c = 3;
output.push(a.to_string());
output.push(b.to_string());
output.push(c.to_string());
}
显然,上面的代码无法编译,因为to_string()
方法没有为Operator
定义。我看到两种修复方式:
- 定义一个
to_string()
方法 - 创建一个向量来存储数字和
Operator
的引用。
我认为第二种是更好的选择,虽然我不知道创建引用向量是否会引入很多复杂性。