将基本算术运算符存储在变量中

Posted

技术标签:

【中文标题】将基本算术运算符存储在变量中【英文标题】:Storing basic arithmetic operators in variables 【发布时间】:2012-05-12 12:56:55 【问题描述】:

如何?

我想在 c++ 中做这样的事情:

int a = 1;
int b = 2;
operator op = +;
int c = a op b;
if (c == 3) // do something

由于我只考虑+-*/,我可以将运算符存储在string 中,然后只使用switch 语句。但是我想知道是否有更好/更简单的方法。

【问题讨论】:

查看 STL 函数如何接受谓词。你可以使用std::plus之类的东西。 enum 是一个选项吗?字符串具体有什么问题/ 【参考方案1】:
int a = 1;
int b = 2;
std::function<int(int, int)> op = std::plus<int>();
int c = op(a, b);
if (c == 3) // do something

根据需要将std::plus&lt;&gt; 替换为std::minus&lt;&gt;std::multiplies&lt;&gt;std::divides&lt;&gt; 等。所有这些都位于标头functional,因此请务必事先#include &lt;functional&gt;

如果您没有使用最新的编译器,请将 std::function&lt;&gt; 替换为 boost::function&lt;&gt;

【讨论】:

以上是关于将基本算术运算符存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章

Java的基本运算符

C++算术运算符

C++算术运算符

JAVA算术运算符介绍

JavaScript-变量数据类型(基本复杂数据类型转换)运算符(算术递增/减比较逻辑赋值优先级)

4.1 算术运算和逻辑运算