【问题标题】:Creating a map of lambdas in C++在 C++ 中创建 lambda 映射
【发布时间】:2012-04-24 08:05:45
【问题描述】:

如何描述 lambda 映射?我想要一个 lambda 映射,它将在事件中调用(就像一个简单的回调)。 lambda 类型是常量。

【问题讨论】:

  • 你的意思是std::map,还是别的什么?
  • 是的,我的意思是 std::map 应该包含 lambda 函数。
  • 我怀疑 lambda type 实际上是一个“常数”。在这种情况下,所有 lamdas 都属于同一个 lambda 类,因此做同样的事情:)。也许,lambda 签名是一样的?
  • @user396672:实际上,C++ 标准认为每个 lambda 都有自己独特的类型。但是,它们可以使用适当的签名安全地包装到 std::function< XXX > 中,甚至(对于那些没有捕获的人)退化为简单的函数指针。
  • mpl 表示元编程库。 boost.org/doc/libs/1_49_0/libs/mpl/doc/index.html基本上是基于模板的。

标签: c++ map c++11 lambda


【解决方案1】:

使用<functional> 标头和std::function 模板类。这允许您指定具有固定方法签名的函数对象。

std::map< unsigned int, std::function<int(int,int)> > callbackMap;

假设您使用unsigned int 对回调进行索引,则上面的映射存储了接收两个int 并返回int 的函数。

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2015-02-03
    • 2020-07-31
    • 2022-10-12
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多