首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++奇异行为中的Lambda函数

C++奇异行为中的Lambda函数
EN

Stack Overflow用户
提问于 2018-09-08 21:44:45
回答 2查看 55关注 0票数 0

在下面的程序中,我尝试使用lambda functionsstd::bind的组合打印10的乘法表。主要目的是学习以上两个概念。然而,我得到的输出(如下所示)是奇怪的。

代码语言:javascript
复制
#include <iostream>
#include <vector>
#include <algorithm>
#include <thread>
#include <zconf.h>
#include <functional>
using namespace std;
using namespace std::placeholders;
int multiply(int a, int b, int c)
{
    return a*b*b;
}
int main()
{
    auto f = std::bind(multiply, 5 , 2 , _1);
    vector<int> vec = {1,2,3,4,5,6,7,8,9,10};
    for_each(vec.begin(), vec.end(), [f](int &v) {cout << "Multiplication Table (10) :" << "v: " << v << " " << f(v) << endl;});
    return 0;
}

输出:

代码语言:javascript
复制
Multiplication Table (10) :v: 1 20
Multiplication Table (10) :v: 2 20
Multiplication Table (10) :v: 3 20
Multiplication Table (10) :v: 4 20
Multiplication Table (10) :v: 5 20
Multiplication Table (10) :v: 6 20
Multiplication Table (10) :v: 7 20
Multiplication Table (10) :v: 8 20
Multiplication Table (10) :v: 9 20
Multiplication Table (10) :v: 10 20

Process finished with exit code 0

在上面的代码中,我做错了什么?什么应该是固定的,这样它才能真正打印出10的乘法表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-08 21:47:10

在我看来只是个简单的错误。变化

代码语言:javascript
复制
return a*b*b;

代码语言:javascript
复制
return a*b*c;
票数 6
EN

Stack Overflow用户

发布于 2018-09-08 21:48:21

将您的职能更改为:

代码语言:javascript
复制
int multiply(int a, int b, int c)
{
    return a*b*c;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52239640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档