在变量中放入+和-之类的运算符?C++

Putting operators like + and - in variables ? C++

本文关键字:运算符 C++ 变量      更新时间:2023-10-16

我想知道如何制作一个可以处理运算符的堆栈。。比如:1+2*5,所以第一个堆栈将取1,2和5。。。另一个堆栈采用C++中的运算符+和*

这样我就可以知道我可以在结构节点中使用哪种数据类型:

struct node{
int data;
char operator [];
node* next;}; 

首先,不要创建自己的链表实现。C++已经有了标准的堆栈(和列表)类型。您可能想要一堆int和一堆字符串:

#include <stack>
#include <string>
std::stack <int> numbers;
std::stack <std::string> operators;

您也可以为操作符使用一堆字符:

std::stack <char> operators;

但是使用字符串允许像CCD_ 1这样的多字符运算符。

不能将运算符作为变量传递,在我看来这是一个轻微的失败。然而,您可以使用一个通用函数对象(在Boost中可用)并为它们生成函数,这将启用此功能。

如果您希望通过运算符重载自定义运算符,您不妨这样做。。你所需要做的就是创建一个你想要使用的所有运算符的枚举,并使用该枚举的堆栈,这将解决以下问题:1.检查是否输入了正确的运算符。2.在没有if/else或开关堆栈的情况下执行操作。

我不确定我是否理解您想要做什么,但每个节点都可以接受一个整数和一个包含运算符的字符。这样,第一个节点包含例如1和"+",第二个节点应该有2作为数据和"*"作为运算符,对于最后一个节点,运算符应该为null,这意味着将不再执行任何操作。