C++ 只绑定一个参数,稍后绑定其余参数

C++ 只绑定一个参数,稍后绑定其余参数,c++,boost,c++11,bind,C++,Boost,C++11,Bind,我想测试不同的算法来计算加速比(单核、cuda、多核)。函数头如下所示: void fraktale_cpu_single(pfc::bitmap * bmp, pfc::RGB_3_t * color_table, const par::complex<float> C) #include <functional> std::bind(fraktale_cpu_mul

我想测试不同的算法来计算加速比(单核、cuda、多核)。函数头如下所示:

void fraktale_cpu_single(pfc::bitmap * bmp,
                         pfc::RGB_3_t * color_table,
                         const par::complex<float> C)
#include <functional>

std::bind(fraktale_cpu_multi, 1,
          std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)

但是我有一个错误,因为没有设置其他参数,我能做什么Boost lib也可用

你需要这样的东西:

void fraktale_cpu_single(pfc::bitmap * bmp,
                         pfc::RGB_3_t * color_table,
                         const par::complex<float> C)
#include <functional>

std::bind(fraktale_cpu_multi, 1,
          std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
#包括
标准::绑定(fraktale_cpu_multi,1,
标准::占位符::_1,标准::占位符::_2,标准::占位符::_3)

您需要这样的东西:

void fraktale_cpu_single(pfc::bitmap * bmp,
                         pfc::RGB_3_t * color_table,
                         const par::complex<float> C)
#include <functional>

std::bind(fraktale_cpu_multi, 1,
          std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
#包括
标准::绑定(fraktale_cpu_multi,1,
标准::占位符::_1,标准::占位符::_2,标准::占位符::_3)

对于函数的其余参数,必须使用占位符:

#include <functional>

using std::bind;
using namespace std::placeholders; // Namespace for _1, _2, ...

do_function_with_pic(bind(fraktale_cpu_multi, 1, _1, _2, _3), "cpu_multi.bmp");
#包括
使用std::bind;
使用命名空间std::占位符;//_1,_2,….的命名空间。。。
带pic的do_函数(bind(fraktale_cpu_multi,1,_1,_2,_3),“cpu_multi.bmp”);

std::bind
将返回调用
fraktale\u cpu\u multi()
函数的函数对象,第一个参数设置为
1
,并将其三个参数作为第二个、第三个参数转发给
fraktale\u cpu\u multi()
,和第四个参数。

对于函数的其余参数,必须使用占位符:

#include <functional>

using std::bind;
using namespace std::placeholders; // Namespace for _1, _2, ...

do_function_with_pic(bind(fraktale_cpu_multi, 1, _1, _2, _3), "cpu_multi.bmp");
#包括
使用std::bind;
使用命名空间std::占位符;//_1,_2,….的命名空间。。。
带pic的do_函数(bind(fraktale_cpu_multi,1,_1,_2,_3),“cpu_multi.bmp”);

std::bind
将返回一个函数对象,该对象调用
fraktale\u cpu\u multi()
函数,第一个参数设置为
1
,并将其三个参数作为第二、第三和第四个参数转发给
fraktale\u cpu\u multi()

我很想“-1”这是因为
使用名称空间std的灾难性建议
…@KerrekSB:继续:-)我不是建议使用它,这只是一个示例代码。但我会编辑它。哎呀,在另一个方向太远了<代码>使用名称空间std::占位符更合理。为了两全其美,您还可以将
using
指令放在本地范围内。@Potatoswatter:天哪,伙计们,这只是演示代码,其目的是演示如何使用
std::bind()
。其余的都是一个细节,我很想用“-1”来解释
使用namespace std的灾难性建议
…@KerrekSB:继续:-)我不是建议使用它,这只是一个示例代码。但我会编辑它。哎呀,在另一个方向太远了<代码>使用名称空间std::占位符更合理。为了两全其美,您还可以将
using
指令放在本地范围内。@Potatoswatter:天哪,伙计们,这只是演示代码,其目的是演示如何使用
std::bind()
。其余的都是细节。