使用C ++中的函数映射函数

时间:2017-12-01 11:01:02

标签: c++ c++11

我是一位有一些JavaScript经验的C ++程序员。我想在C ++ 11中做类似于这段代码的东西:

map = {
    "text1": function() { /*function #1 code*/ },
    // ..
    "textn": function() { /*function #n code*/ }
 }

我知道他们在C ++ 11中添加了lambdas,但我不确定如何根据我的特定目的使用它们。

修改

在C / C ++中实现它的经典方法是通过函数指针数组,但我觉得它们很难调试

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

expect(selectElement.nativeElement.value).toBe('1');

答案 1 :(得分:2)

@Stefano为您提供了问题的正确数据类型。虽然我想展示一些细节:

首先,您无法使用key:value语法。你需要做这样的事情:

std::map<std::string, std::function<void()>> myMap{
    {"key", /*any callable, including lambdas, functions and function objects*/},
    //ditto
};

请注意,它们都必须具有相同的功能签名,例如在这种情况下,返回类型必须是void,并且它不应该接受任何参数。