我的问题是:我想编写一个创建数组函数指针的程序。我知道如何制作指向函数的指针,但不知道如何制作它们的数组。
这就是我现在所做的:
In [85]: cols = ['col1','col2','col3','col4']
In [86]: all_combinations = list(chain(*[list(combinations(cols, i))
for i in range(2, len(cols)+1)]))
In [87]: all_combinations
Out[87]:
[('col1', 'col2'),
('col1', 'col3'),
('col1', 'col4'),
('col2', 'col3'),
('col2', 'col4'),
('col3', 'col4'),
('col1', 'col2', 'col3'),
('col1', 'col2', 'col4'),
('col1', 'col3', 'col4'),
('col2', 'col3', 'col4'),
('col1', 'col2', 'col3', 'col4')]
在我的代码中,我创建了这些指向数组中函数的指针,例如。
double add(double a, double b) { return a + b; }
double sub(double a, double b) { return a - b; }
double mult(double a, double b) { return a * b; }
double div(double a, double b) { return a/b; }
int main() {
double(*Padd)(double a, double b);
double(*Psub)(double a, double b);
double(*Pmult)(double a, double b);
double(*Pdiv)(double a, double b);
Padd = &add;
Psub = ⊂
Pmult = &mult;
Pdiv = ÷
}
我该怎么做?
答案 0 :(得分:0)
只需声明一种新类型' Tpointers'表示指向函数的指针,该函数提供两个double并返回double。
在代码中,您可以创建一个函数数组。
#include<iostream>
// The function pointer type!
typedef double (*Tpointers)(double, double);
double add(double a, double b) { return a + b; }
double sub(double a, double b) { return a - b; }
double mult(double a, double b) { return a * b; }
double div(double a, double b) { return a / b; }
int main() {
// A functions pointers array .
Tpointers fun_array[4];
// Assign the values
fun_array[0] = &add;
fun_array[1] = ⊂
fun_array[2] = &mult;
fun_array[3] = ÷
// A little test
std::cout << fun_array[2](3, 3) << " " << fun_array[3](3,3) << " " << fun_array[1](3,3)
<< std::endl;
return 0;
}
在c ++中,您还可以创建函数指针的std :: vector ...或者来自&#34; Tpointers&#34;的std库中的任何容器。