C++循环通过运算符

C++ cycling through operators

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

我有一个和,例如:

x + y

我还想对相同的两个变量执行减法、乘法和除法:

x - y
x * y
x / y 

依次循环通过所有四个操作员的最佳方式是什么?

我知道这在函数式编程语言中很容易做到,但在C++中我不确定。

提前谢谢。

除了显而易见的"写出它们"之外,只有一个想法:

int add(int l, int r){
  return l + r;
}
int sub(int l, int r){
  return l - r;
}
int mul(int l, int r){
  return l * r;
}
int div(int l, int r){
  return l / r;
}
int main(){
  typedef int (*op)(int,int);
  op ops[4] = {add, sub, mul, div};
  int a = 10, b = 5;
  for(int i=0; i < 4; ++i){
    ops[i](a,b);
  }
}

Ideone的例子。

如果运算符是用户定义的,则可以在需要指向函数(成员)的指针时传递它们。对于基本类型,您可能需要像Xeo所展示的那样编写包装器。

您还可以接受std::binary_function并使用std::plus等

这在C++0X中通过std::函数和lambda变得更容易。

但显然,更准确地了解你想要实现的目标会有所帮助。

可能这就是它的样子(类似于函数式编程语言):

template<typename T>
std::vector<T> do_ops( const T& a, const T& b )
{
  std::vector<T> result;
  result.push_back( a + b );
  result.push_back( a - b );
  result.push_back( a * b );
  result.push_back( a / b );
  return result;
}
int main()
{
  std::vector<int> res = do_ops( 10, 5 );  
}