如何在C++中使用Lambda函数进行累加?

2024-02-26

我正在尝试使用乘法 lambda 来累积向量中的数字。

我的错误是什么?我得到 1 作为结果,而不是 24 (= 123*4)。我的做法如下:

std::function<float(float a, int x)> func;
std::vector<int> m{ 1, 2, 3, 4 }; // <-- Multiply: 1*2*3*4 = 24

float accumulation = 1.0f;
func = [&accumulation, &m](float a, int i) {
    accumulation = a * *m.begin()++;
    return accumulation;
};
accumulation = accumulate(m.cbegin(), m.cend(), accumulation, func);

惯用的方法是:

auto accumulation = std::accumulate(m.begin(), m.end(), 1, std::multiplies{});

Your func做了很多奇怪的事情,我不知道你希望做什么accumulation = a * *m.begin()++;或者你为什么离开i没用过。这更像是这样:

auto func = [](int lhs, int rhs) { return lhs * rhs; };

auto accumulation = std::accumulate(m.begin(), m.end(), 1, func);

或者如果你想这样做floats:

auto func = [](float lhs, float rhs) { return lhs * rhs; };

auto accumulation = accumulate(m.cbegin(), m.cend(), 1.f, func);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在C++中使用Lambda函数进行累加? 的相关文章

随机推荐

  • 在 R 中使用 strsplit(),忽略括号中的任何内容

    我正在尝试使用strsplit 在 R 中根据逗号将字符串分成几部分 但我不想在括号中拆分任何内容 我认为答案是正则表达式 但我正在努力使代码正确 例如 x lt This is it isn t it well yes gt strspl
  • AngularJS 控制器和“严格使用”

    我最近开始使用 JSHint 它要求我使用 use strict 的函数形式 从那时起 AngularJS 就会抛出错误 错误 参数 webAddressController 不是函数 未定义 当我删除 use strict 的函数形式时
  • 从协议扩展调用选择器

    我正在构建简单的主题引擎 并且希望有一个扩展 可以添加UISwipeGestureRecognizer to UIViewController 这是我的代码 protocol Themeable func themeDidUpdate cu
  • 如何在flutter中读取XML文件?

    我正在尝试读取 flutter 中的 XML 文件 但每次我尝试读取该文件时 它只会引发错误 这是我读取 xml 文件的地方 我的 XML 文件很大 convertXMLtoJSON async File file File assets
  • 如何在 MVVM 中绑定到 PasswordBox

    我遇到了绑定到的问题PasswordBox 这似乎是一个安全风险 但我正在使用 MVVM 模式 所以我希望绕过这个 我在这里发现了一些有趣的代码 有人使用过这个或类似的东西吗 http www wpftutorial net Passwor
  • 为什么ItemTouchHelper.Callback的onChildDraw会在clearView之后被调用

    问题是我想在 RecyclerView 中拖动该项目时对其执行提升 根据文档所述 我应该在以下位置自定义拖动视图的行为ItemTouchHelper Callback onChildDraw https developer android
  • Typescript - 当传入多个键值时缩小函数中的 T[K]

    我正在尝试编写一个钩子 它接受对象的多个键并根据当前应用的过滤器过滤数据 所以 大致如下 interface IFilterable
  • 具有可变行高的 SWT 表:适用于 Linux,但不适用于 Mac/Windows

    问题 我需要一个具有可变行高的 SWT 表 JFace TableViewer 事实上 我在我的开发机器上解决了这个问题 运行 Ubuntu 10 10 不幸的是 这在 Windows 和 Mac 上都不起作用 最初 我以为我没有正确使用这
  • 在一行中多次递增 MATLAB 数组的一个值

    这是一个关于在同一语句中多次递增 MATLAB 数组的一个值而无需使用 for 循环的问题 我将数组设置为 gt gt A 10 20 30 然后运行 gt gt A 1 1 A 1 1 20 3 A 13 20 30 显然 20 被忽略了
  • ASP.NET Web Api 在应该返回 404 时返回 200 OK

    我在 ASP NET Web API 项目中的控制器上有以下操作方法 Route api v2 project projectId stuff HttpGet public IHttpActionResult Get int project
  • Android 的大堆选项适用于升级到 ICS 的旧手机吗?

    我自己也有一台 Galaxy Nexus 而且我知道android largeHeap true 清单选项适用于这款手机 但我想知道它是否适用于正在升级到冰淇淋三明治的旧手机 即三星 Nexus S 我之所以问这个问题 是因为我构建了一个大
  • if(!isset($_POST["user"]) 被忽略并返回未定义索引

    当我输出这段代码时 23 if isset POST user 24 user POST user 25 user2 user 26 pass 0 POST password 27 pass 1 POST password2 28 emai
  • 模块导出是否每次导入时都会创建一个新实例[重复]

    这个问题在这里已经有答案了 src utils http js import axios from axios const axiosInstance axios create baseURL process env VUE APP API
  • 如何在 Gherkin 中实现“if”

    我正在尝试将 Selenium 测试转换为 Gherkin 有没有办法在 Gherkin 中实现 if 语句 示例 假设代码按以下格式编写 我只是写如下描述 请理解双斜杠后面的部分是实际的 Selenium 代码 launch the ap
  • C#:在 C# 4.5 中等待请求完成

    我的 asp net 4 0 应用程序中有一个 http 请求 我希望线程在继续之前等待 HttpClient client new HttpClient HttpResponseMessage responseMsg client Get
  • 活动背景昏暗

    我试图将活动显示为具有暗背景的浮动窗口 并且我使用以下代码来执行此操作 该代码取自 Google I O 2016 项目 protected void setupFloatingWindow int width int height int
  • 从私有 pypiserver 安装 python 包

    我在 nginx 代理后面设置了一个 pypiserver 它使用 htpasswd 进行身份验证 我目前可以上传 sdists 但我不知道如何下载它们 我希望能够在运行时下载它们setup py test并以某种方式使用pip 这可能吗
  • 上次值从负值变为正值

    如何按 PersonID 返回余额字段上次从负值变为正值的日期 在下面的示例数据中 对于 PersonID 1 它发生在 2019 年 7 月 8 日 对于 PersonID 2 它发生在 2019 年 8 月 8 日 值可以多次从负值变为
  • 如何从一个文件中提取多个 JSON 对象?

    我对 Json 文件很陌生 如果我有一个包含多个 json 对象的 json 文件 如下所示 ID 12345 Timestamp 20140101 Usefulness Yes Code event1 A result 1 ID 1A35
  • 如何在C++中使用Lambda函数进行累加?

    我正在尝试使用乘法 lambda 来累积向量中的数字 我的错误是什么 我得到 1 作为结果 而不是 24 123 4 我的做法如下 std function