我开发了一个具有许多内置函数的脚本引擎,所以为了调用任何函数,我的代码只是进入一个if .. else if .. else if检查名称的墙,但我想开发一个更有效的解决方案.
我应该使用带字符串的hashmap作为键和指针作为值吗?我怎么能用STL地图呢?
编辑:我想到的另一点:当然使用map会强制编译器不要内联函数,但是我的低效方法没有因函数调用的必要性而产生任何开销,它只是执行代码.
所以我想知道函数调用产生的开销是否会比拥有if..else链更好...否则我可以通过在运行时检查字符来最小化比较次数(将更长但更快).
嘿所以我正在制作一个以字符串作为键和成员函数指针作为值的映射.我似乎无法弄清楚如何添加到地图,这似乎没有工作.
#include <iostream>
#include <map>
using namespace std;
typedef string(Test::*myFunc)(string);
typedef map<string, myFunc> MyMap;
class Test
{
private:
MyMap myMap;
public:
Test(void);
string TestFunc(string input);
};
#include "Test.h"
Test::Test(void)
{
myMap.insert("test", &TestFunc);
myMap["test"] = &TestFunc;
}
string Test::TestFunc(string input)
{
}
Run Code Online (Sandbox Code Playgroud)