时间:2019-03-17 标签:c++boostlambdalibraries

2024-04-09

使用 boost lambda 库开始编程的最佳方法可能是什么。


在 C++ 语言和库的范围内,我建议首先习惯使用 STL 算法函数模板进行编程,因为 boost::lambda 最常见的用途之一是用内联表达式替换函子类。

库文档本身为您提供了一个预先示例,说明它的用途:

for_each(a.begin(), a.end(), std::cout << _1 << ' ');

where std::cout << _1 << ' '生成一个函数对象,当调用时,将其第一个参数写入cout溪流。这是你可以使用自定义函子类来完成的事情,std::ostream_iterator或显式循环,但 boost::lambda 在简洁性和清晰性方面胜出——至少如果您习惯了函数式编程概念。

当您(过度)使用 STL 时,您会发现自己倾向于 boost::bind 和 boost::lambda。它对于以下事情非常方便:

std::sort( c.begin(), c.end(), bind(&Foo::x, _1) < bind(&Foo::x, _2) );

在达到这一点之前,不要那么多。因此,使用 STL 算法,编写自己的函子,然后使用 boost::lambda 将它们转换为内联表达式。

从专业的角度来看,我相信开始使用 boost::lambda 的最佳方法是理解和接受 boost::bind 的用法。在 boost::bind 表达式中使用占位符看起来没有“裸” boost::lambda 占位符那么神奇,并且在代码审查期间更容易被接受。超越基本的 boost::lambda 使用很可能会让你的同事感到悲伤,除非你在前沿的 C++ 商店。

尽量不要太过分——那里are的时间和地点for-loop really是正确的解决方案。

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

时间:2019-03-17 标签:c++boostlambdalibraries 的相关文章

随机推荐

  • C#:通过 200 万个对象进行内存高效搜索,无需外部依赖

    我需要能够搜索集合大约 200 万个 C 项目 搜索应该可以在多个字段上进行 简单的字符串匹配就足够了 使用外部依赖项 例如数据库不是一个选择 但是使用内存数据库就可以了 主要目标是做到这一点内存效率高 集合中的类型非常简单 没有长字符串
  • 如何找到 toast 小部件的布局参数?

    我喜欢的布局toastwidget非常多 这意味着圆角 透明度 浅灰色边框 有没有办法查看像这样的android标准小部件的布局参数toast 我想定义一个TextView具有相同的布局参数 布局可以在下面找到 SDKBASEDIR pla
  • 如何在 ASP.NET C# 中发送电子邮件

    我对这个很陌生ASP NET http en wikipedia org wiki ASP NETC 区域 我计划通过 ASP NET C 发送邮件 这是SMTP http en wikipedia org wiki Simple Mail
  • 使用 Google+ API 获取用户凭据

    我正在尝试包括谷歌登录在我的android应用程序中使用谷歌 API 我可以从用户那里获取帐户详细信息 但登录后我会得到null when 请求用户名使用调用 Plus PeopleApi getCurrentPerson mGoogleA
  • 错误QApplication:没有这样的文件或目录

    我已经安装了具有 Qt 的 C SDK 但是当我尝试编译链接 QApplication 的代码时 它给了我错误 Error QApplication no such file or directory 我如何链接这些库 我搜索目录 有一个名
  • javascript 文件缓存的依据是什么?

    javascript 文件在什么基础上被缓存 假设我从一个网站加载一个名为 m script js 的文件 而在另一个网站上我使用相同的名称 m script js 但内容不同 浏览器会获取新的名称 还是只是查看名称并从缓存中加载它 两个
  • 检查位掩码的特定位

    我正在与Bitmasks in python 据我所知 这些是整数数组 当它们解压缩为二进制格式时 它们会告诉您数组中给定元素的 32 位中的哪一个被设置 1 我想知道检查数组的任何元素是否设置了 4 个特定位的最快方法 我不关心其余的 我
  • 更改所选单选按钮标签的样式

    我试图在表单中选择单选按钮标签时更改其边框颜色 我发现这个问题几乎正是我想要做的 CSS 如何设置选定单选按钮标签的样式 https stackoverflow com questions 4641752 css how to style
  • 程序太大

    我收到此错误消息 Procedure too large 在 VBA 中 这个错误的原因和解决办法是什么 您可能有一个或多个巨大的过程 函数 我认为 VBA 每个过程的限制为 64k 或其他值 您可以通过将该过程拆分为多个过程来修复此问题
  • 从 pandas.DataFrame 的每一列中获取最高值

    这是我的pandas DataFrame import pandas as pd data pd DataFrame first 40 32 56 12 89 second 13 45 76 19 45 third 98 56 87 12
  • Rails 加入多态关联

    我有一个名为的多态关联Notifiable在一个名为Notifiaction module Notifiable def self included base base instance eval do has many notificat
  • 泛型编程是多态性的一个例子吗?

    我正在做一项家庭作业 一个项目 其中一个标准是我必须以一种显着提高代码整体质量或功能的方式使用多态性 我做了一个哈希表 如下所示 public class HashTable
  • 垂直居中,右对齐,多行文本在绝对定位的 div 中,具有 Flexbox 父级

    我有一些绝对定位的 div 有两行文本 一个 h2 和一个 p 我试图让文本 在绝对定位的 div 内垂直居中 右对齐 并且 h2 和 p 标签之间有一个换行符 绝对定位的 div 包含在父级中 所以我想我可以使用 flexbox 来解决这
  • “由于在生成器中使用而发生移动”错误是什么意思?

    我遇到了关于生成器的问题 use tokio runtime Runtime use tokio task JoinHandle use std sync Arc pub fn run f Box
  • 在android中以编程方式设置设备时间[重复]

    这个问题在这里已经有答案了 我需要动态设置设备时间 如果可能 请指导我 据我尝试 MainActivity java Calendar c Calendar getInstance c set 2010 1 1 12 00 00 清单文件
  • PHP smtp.office365.com 用于电子邮件

    是否可以将PHP应用程序邮件与Office365集成 我已经尝试过但发现了这个错误 authentication failure SMTP SMTP server does not support authentication code 2
  • WPF - 内容更改之前的数据绑定触发

    如何创建在绑定更改值之前触发的触发器 如何对数据模板执行此操作
  • Javascript 模态弹出窗口

    我正在尝试创建一个简单的模式弹出窗口 我已经完成了 CSS Javascript 也基本完成了 我现在点击页面按钮上的按钮 就会出现弹出窗口 但它出现在页面顶部 如果您一直滚动到页面顶部 它就会完全显示出来 然而 我希望模式弹出框根据当前滚
  • Akka Stream 中的 Via/ViaMat/to/toMat

    有人能清楚地解释一下这4种方法有什么区别吗 什么时候使用每一种更合适 一般来说 这组方法的名称是什么 还有更多方法可以完成相同的工作吗 scaladoc 的链接也可能有帮助 D 所有这些方法都是将两个流合并为一个流所必需的 例如 您可以创建
  • 时间:2019-03-17 标签:c++boostlambdalibraries

    使用 boost lambda 库开始编程的最佳方法可能是什么 在 C 语言和库的范围内 我建议首先习惯使用 STL 算法函数模板进行编程 因为 boost lambda 最常见的用途之一是用内联表达式替换函子类 库文档本身为您提供了一个预