1

我有一个包含函数指针的向量:

vector<double (*)(vector<double>)> dY = {d2x,d2y,dx,dy}

在另一个函数中,我有一个循环遍历这个向量。

for( vector<double>::const_iterator it = dY.begin(); it != dY.end(); ++it){
    vector<double> Y = {0,10,0,10};
    ...
}

现在我想计算 d2x(Y)、d2y(Y)、dx(Y) 和 dy(Y),但我没有正确地转换迭代器,以便我可以提供参数。

我怎样才能做到这一点?

非常感谢

4

2 回答 2

5

你真的迭代了正确的向量吗?循环中的类型it不适合dY向量。

for( vector<double (*)(vector<double>)>::const_iterator it = dY.begin(); it != dY.end(); ++it)
//          ^^^^^^^^^^^^^^^^^^^^^^^^^ -- You need the correct type here

一旦你有一个正确的迭代器,这应该可以工作:

double result = (*it)(Y);
于 2013-01-15T16:30:05.427 回答
2

不需要强制转换,只需取消引用迭代器即可获取函数指针:

double d = (*it)(Y);

但是,您声明了错误的迭代器类型;它应该是

vector<double (*)(vector<double>)>::const_iterator

由于您使用的是 C++11,因此您可以根据需要将其缩短为auto

于 2013-01-15T16:34:07.353 回答