在看C++标准程序库书中,看到bind1st,bind2nd及bind的用法,当时就有一种熟悉感,仔细想了下,是F#里提到的柯里化。下面是维基百科的解释:在计算机科学中,柯里化英语Currying),又译为卡瑞化加里化,是把接受多个参数函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

  下面来看一个简单的例子。

void mult(int& a, int b)
{
    cout << "a:" << a << " b:" << b << endl;
    a += b;
}
void test24()
{
    using namespace std::placeholders;
    vector<int> list;
    int i = 0;
    generate_n(back_inserter(list), 10, [&i](){
        return i++;
    });
    for_each(list.begin(), list.end(), bind(mult, _1, 10));
    for_each(list.begin(), list.end(), bind(mult, 100, _1));
    copy(list.begin(), list.end(), ostream_iterator<int>(cout, " "));
}
bind用法

相关文章:

  • 2022-12-23
  • 2022-01-16
  • 2021-05-29
  • 2021-08-12
  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
  • 2022-01-28
猜你喜欢
  • 2021-12-13
  • 2022-12-23
  • 2021-07-21
  • 2022-12-23
  • 2021-10-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案