簡體   English   中英

使用C ++中的功能JavaScript樣式進行映射

[英]Map with functions JavaScript style in C++

我是一位具有JavaScript經驗的C ++程序員。 我想在C ++ 11中執行類似於以下代碼的操作:

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

我知道他們在C ++ 11中添加了lambda,但是我不確定如何從特定目的使用它們。

編輯:

在C / C ++中實現此功能的經典方法是通過函數指針數組,但是我發現它們很難調試

您可以使用以下內容:

#include <functional>
std::map<std::string, std::function<void()>> myMap {
    { "text1", []() { /*function #1 code*/ } },
    //...
    { "textn", []() { /*function #n code*/ } }
};

@Stefano為您提供了解決該問題的正確數據類型。 雖然我想顯示一些細節:

首先,您不能使用key:value語法。 您需要執行以下操作:

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

請注意,它們都必須具有相同的函數簽名,例如,在這種情況下,返回類型必須為void ,並且不應接受任何參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM