gpt4 book ai didi

cmath 函数的 C++ 映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:22 26 4
gpt4 key购买 nike

我想创建一个映射,其键是作为字符串的函数名称,值是函数本身。所以像这样...

#include <cmath>
#include <functional>
#include <map>
#include <string>

typedef std::function<double(double)> mathFunc;

int main() {
std::map< std::string, mathFunc > funcMap;

funcMap.insert( std::make_pair( "sqrt", std::sqrt ) );

double sqrt2 = (funcMap.at("sqrt"))(2.0);

return 0;
}

将用于在某些输入值上调用 sqrt 函数。然后你当然可以向 map 添加其他函数,如 sin、cos、tan、acos 等,只需通过一些字符串输入来调用它们。我的问题是映射中的值类型应该是什么,函数指针和 std::function 在 std::make_pair 行给出以下错误

error: no matching function for call to 'make_pair(const char [5], <unresolved overloaded function type>)'

那么对于像 std::sqrt 这样的内置函数,我的值类型应该是什么?

谢谢

最佳答案

typedef double (*DoubleFuncPtr)(double);
...
funcMap.insert( std::make_pair( "sqrt", static_cast<DoubleFuncPtr>(std::sqrt) ) );

关于cmath 函数的 C++ 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17135962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com