[英]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.