将基本算术运算符存储在变量中
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<>
替换为std::minus<>
、std::multiplies<>
、std::divides<>
等。所有这些都位于标头functional
,因此请务必事先#include <functional>
。
如果您没有使用最新的编译器,请将 std::function<>
替换为 boost::function<>
。
【讨论】:
以上是关于将基本算术运算符存储在变量中的主要内容,如果未能解决你的问题,请参考以下文章