【发布时间】:2016-07-12 14:13:50
【问题描述】:
在 switch 语句中,如果其他情况都不适用,您可以指定默认返回值。 我想用 std::map 做类似的事情,但我不确定是否可能: 如果没有适合搜索的键,我可以让地图返回特定的值/条目而不是 map::end 吗?
示例(这是我最终想做的 - 我知道代码不起作用):
std::map<std::string, void* (*) (DataObject*)> commands; //Mapping functions to keys
commands["Test"] = function(DataObject d){doSomething();}
commands[Nothing else applies] = function(DataObject d){doSomethingElse();}
commands.find("Test")(someDataObject); // doSomething(); happens
commands.find("blabla")(someDataObject); //doSomethingElse(); happens because no other entry was found
这样的事情可能吗?
(另外,我在这个例子中使用函数指针的方式可能根本不起作用 - 我可以使用 cpp11 的 lambda 表达式来完成我想做的事情吗?)
我不想使用 switch 子句,也不想使用 if(m.find(x) != m.end()) 子句,也不想使用更多 if-else。
【问题讨论】:
标签: c++ dictionary function-pointers