C++循环通过运算符
C++ cycling through operators
我有一个和,例如:
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 );
}
相关文章:
- 如何使用新运算符跟踪在循环中创建的 QLabel
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- C++在最后一个循环中排除了部分循环运算符
- 如何使用while循环找到GCD?模数运算符是如何工作的
- 在 while 循环中使用字符串(OR 运算符)
- Istream 运算符重载'>>'导致无限循环
- 声明具有双倍大于运算符的 for 循环
- C++ - 循环unordered_map - 执行哈希运算符()
- 基于范围的循环使用另一个运算符
- C++ 中 for 循环中的比较运算符
- 如何在 Qt 文件流中使用 >> 运算符 while 循环
- 文件处理 - 错误:与 while 循环 (C++) 中的"运算符>>"不匹配(代码::块)
- <= 和 == 运算符无法正常工作以结束循环
- C++ ? 运算符,在 for 循环中继续运算符
- 在OpenCV中使用Matlab的冒号运算符C++没有循环
- 字符串流<<运算符在循环中消耗大量内存
- 双向循环列表中的赋值运算符以错误的顺序添加元素
- C++ 嵌套条件运算符循环
- 检查错误时重载>>运算符中的无限循环
- 如何从重写的运算符循环访问矢量数据成员<<