相关疑难解决方法(0)

绑定兰斯达?

我有一个关于哪种样式是首选的问题:std :: bind Vs lambda在C++ 0x中.我知道它们服务于某些不同的目的,但我们举一个交叉功能的例子.

使用lambda:

uniform_int<> distribution(1, 6);
mt19937 engine;
// lambda style
auto dice = [&]() { return distribution(engine); };
Run Code Online (Sandbox Code Playgroud)

使用bind:

uniform_int<> distribution(1, 6);
mt19937 engine;
// bind style
auto dice = bind(distribution, engine);
Run Code Online (Sandbox Code Playgroud)

我们应该选择哪一个?为什么?假设与上述示例相比情况更复杂.即一个优于另一个的优点/缺点是什么?

c++ lambda functional-programming bind c++11

52
推荐指数
5
解决办法
3万
查看次数

我什么时候应该使用std :: bind?

每次我需要使用时std::bind,我最终都会使用lambda.那么我std::bind什么时候应该使用?我刚刚从一个代码库中删除它,我发现lambdas总是更简单,更清晰std::bind.是不是std::bind完全没必要?它不应该在将来被弃用吗?我std::bind什么时候应该更喜欢lambda函数?(必须有一个原因,它与lambda一起进入标准.)

我也注意到越来越多的人熟悉lambdas(所以他们知道lambdas做了什么).但是,很少有人熟悉std::bindstd::placeholders.

c++ lambda bind standard-library c++11

36
推荐指数
2
解决办法
1万
查看次数

如何在C ++中重新分配函数名称

我在C ++中有一个与此示例问题类似的问题。在这种情况下,我有两个具有相同接口的成员函数。根据传递给超级函数的字符串中的信息,我想将两个成员函数之一分配给变量class_func。有没有办法做到这一点?

// test.hpp
class TestClass
{
public:
    double master_function(double a, double b, std::string func_name);
private:
    double add(double a, double b);
    double subtract(double a, double b);
};

// test.cpp
double TestClass::master_function(double a, double b, std::string func_name)
{
    if (func_name == std::string("Add") const auto& class_func = add;
    else const auto& class_func = subtract;
    return class_func(a, b);
}
// =========================================================================

double TestClass::add(double a, double b)
{
    return a + b;
}
// =========================================================================

double TestClass::subtract(double a, double b)
{
    return …
Run Code Online (Sandbox Code Playgroud)

c++ c++17

3
推荐指数
1
解决办法
145
查看次数