我有一笔钱,例如:
x + y
我还想对相同的两个变量进行减法,乘法和除法:
x - y
x * y
x / y
依次循环通过所有四个操作员的最佳方式是什么?
我知道在函数式编程语言中这很容易,但在C ++中我不确定。
提前致谢。
答案 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);
}
}
答案 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 );
}