C ++在运营商中循环

时间:2011-05-24 11:31:53

标签: c++ operator-keyword

我有一笔钱,例如:

x + y

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

x - y
x * y
x / y 

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

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

提前致谢。

3 个答案:

答案 0 :(得分:4)

除了显而易见的“写出来”之外,还有一个想法:

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);
  }
}

Example at Ideone

答案 1 :(得分:1)

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

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

使用std :: function和lambda。

在C ++ 0X中更容易实现

但很明显,更准确地了解你想要达到的目标会有所帮助。

答案 2 :(得分:0)

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

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 );  
}