在变量中放入+和-之类的运算符?C++
Putting operators like + and - in variables ? C++
我想知道如何制作一个可以处理运算符的堆栈。。比如: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,这意味着将不再执行任何操作。
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 一个关于在C++中重载布尔运算符的问题
- 运算符C++ "delete []"仅删除 2 个前值
- 模板类无法识别友元运算符
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 关闭||运算符优化
- 通过继承类使用来自不同命名空间的运算符
- C++Cast运算符过载
- 如何使用AngelScript注册SFML Vector2运算符
- 重载元组索引运算符-C++
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 布尔比较运算符是如何在C++中工作的
- 重载运算符new[]的行为取决于析构函数
- 如何防止clang格式在流运算符调用之间添加换行符<<