192得票3回答
我应该通过const引用传递std::function吗?

假设我有一个函数,它接受一个`std::function`作为参数: void callFunction(std::function<void()> x) { x(); } 我应该通过const引用传递x吗? void callFunction(const std:...

183得票8回答
std::function与模板的区别

由于C++11,我们得到了std::function函数对象封装家族。不幸的是,我一直听到有关这些新添加内容的负面评价。其中最普遍的是它们非常慢。我测试了一下,与模板相比,它们确实表现不佳。#include <iostream> #include <functional&gt...

182得票4回答
std::function和std::bind:它们是什么,何时应该使用?这是一个关于IT技术的提问标题。

我知道functor是什么以及何时使用它们与std算法,但我不理解Stroustrup在C++11 FAQ中讲述的有关它们的内容。 是否有人可以解释一下std::bind和std::function是什么,何时应该使用它们,并为新手提供一些示例?

134得票3回答
如何在C++11中正确检查std::function是否为空?

我在想如何正确地检查一个std::function是否为空。考虑以下例子:class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int...

133得票3回答
std::function是用来干什么的,我该如何使用它?

我需要使用std::function,但我不知道以下语法的含义。 std::function<void()> f_name = []() { FNAME(); }; 使用std::function的目标是什么?是为了创建一个指向函数的指针吗?

122得票6回答
std::function是如何实现的?

根据我找到的资料,一个lambda表达式本质上是由编译器创建一个带有重载函数调用运算符和引用变量作为成员的类来实现的。这意味着lambda表达式的大小是不固定的,如果引用变量足够多,那么大小可以是任意大。 一个std::function应该有一个固定的大小,但它必须能够包装任何类型的可调用对...

117得票2回答
C++11 lambda实现和内存模型

我想了解一些关于如何正确思考C++11闭包和std::function的信息,包括它们的实现方式和内存处理方式。 虽然我不相信过早优化,但我有一个习惯,在编写新代码时仔细考虑我的选择对性能的影响。我还经常进行实时编程,例如在微控制器和音频系统上,需要避免非确定性的内存分配/释放暂停。 因此...

83得票6回答
C++11中的std::set lambda比较函数

我想创建一个使用自定义比较函数的 std::set。 我可以将其定义为带有 operator() 的类,但我希望能够在使用它的地方定义一个 lambda 函数,因此我决定在具有 std::set 作为成员的类的构造函数的初始化列表中定义 lambda 函数。但是我无法获取 lambda 的类型...

77得票5回答
我应该复制std::function还是总是可以使用它的引用?

在我的C++应用程序中(使用Visual Studio 2010),我需要存储一个std::function,类似于以下代码:class MyClass { public: typedef std::function<int(int)> MyFunction...

76得票6回答
C++11 lambda作为数据成员?

可以将lambda定义为数据成员吗? 例如,是否可以使用lambda来重写下面的代码示例,而不是使用函数对象? struct Foo { std::function<void()> bar; }; 我想知道的原因是因为以下的lambda函数可以作为参数传递: te...