如何在 for_each 中组合函数和谓词?

2024-03-24

你怎么能打电话给Function over some容器的一部分,使用for_each() ?

我创建了一个for_each_if()做一个

for( i in shapes )
    if( i.color == 1 )
        displayShape(i);

电话看起来像

for_each_if( shapes.begin(), shapes.end(),
                       bind2nd( ptr_fun(colorEquals), 0 ),
                       ptr_fun( displayShape ) );

bool colorEquals( Shape& s, int color ) {
    return s.color == color;
}

然而,我觉得模仿类似STL的算法不是我应该做的事情。

  1. 有没有办法只使用现有的 STL 关键字来生成这个?

    I did not想做一个

     for_each( shapes.begin(), shapes.end(),
                       bind2nd( ptr_fun(display_shape_if_color_equals), 0 ) );
    

    因为,在更复杂的情况下,函子名称会误导函子的含义

  2. *有没有办法访问结构体的成员(例如colorEquals)对于像这样的函数for_each无需创建函数? *


模仿类似 STL 的算法正是您应该做的。这就是它们出现在 STL 中的原因。

具体来说,您可以使用仿函数而不是创建实际的函数并绑定它。这确实整洁多了。

template<typename Iterator, typename Pred, typename Operation> void 
for_each_if(Iterator begin, Iterator end, Pred p, Operation op) {
    for(; begin != end; begin++) {
        if (p(*begin)) {
            op(*begin);
        }
    }
}
struct colorequals {
    colorequals(int newcol) : color(newcol) {}
    int color;
    bool operator()(Shape& s) { return s.color == color; }
};
struct displayshape {
    void operator()(Shape& s) { // display the shape }
};
for_each_if(shapes.begin(), shapes.end(), colorequals(0), displayshape());

这通常被认为是惯用的方法。

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

如何在 for_each 中组合函数和谓词? 的相关文章

  • 更改 botframework Formflow 中的确认选项

    我在 botframework 中创建了一个表单流 我想更改确认选项 默认情况下需要 是 和 否 但我希望它继续进行 而不是 是 即使用户输入 确定 是 是 等 我如何添加确认选项 您需要将新条款添加到YesFormBuilder 配置的数
  • 如何在代码中设置控件模板?

    我在 XAML 中有这个
  • XML 字符串到 XML 文档

    我有一个完整的 XML 文档String我需要将其转换为 XML 文档并解析文档中的标签 此代码示例取自csharp examples net http www csharp examples net xml nodes by name 写
  • 调用程序中对库类成员的未定义引用错误

    下面添加了其他问题 2011 年 4 月 11 日 我正在用 C 开发一组跨平台的共享库 DLL Sos 和测试程序 尽管我必须能够支持 C 这些库将仅作为目标代码发布 但测试程序将随源代码一起发布 因此我们的客户可以获得示例代码 因此 我
  • 如何使用 Dapper 将字符串作为 NULL 发送到 SQLServer?

    我有一个场景 C 中的字符串可以是null 我需要它是NULL在 SQL Server 上 我使用 Dapper 将其发送到 SQLServer 查询如下 connection Query
  • 如何序列化其类相互引用的类层次结构,但避免 XmlInclude?

    我有一个类的层次结构 我想使用XmlSerializer类及其相关属性 有一个基本抽象类 然后是相当多的派生类 在下面的代码中 我已将派生类的数量减少到五个 但实际代码中还有更多 这些类形成一个层次结构 并且经常包含对层次结构中类的实例的引
  • 设置 C# 可选参数的默认值

    每当我尝试将可选参数的默认值设置为资源文件中的某些内容时 我都会收到以下编译时错误 message 的默认参数值必须是编译时常量 有什么方法可以改变资源文件的工作方式来实现这一点吗 public void ValidationError s
  • 用于更改可为空和非空数据类型的数据注释是什么?

    我认为这对于有经验的程序员来说应该很简单 但事实就是如此 我正在开发一个首先使用实体 框架代码的项目 我还启用了迁移并设置为自动 可爱的功能 我愚蠢地在我的实体类中声明了一种错误的数据类型 现在我意识到它不适用于我想要做的事情 一定是自动完
  • libcurl HTTP HEAD 请求没有自动代理连接标头

    我需要关于使用 libcurl 进行以下操作的说明 我需要发送如下所示的 http HEAD 请求 HEAD mshare 3 30002 12 primary stream xNKNVH mpeg HTTP 1 1 Host 192 16
  • 如何使用 C# 从数据库中检索多个图像

    我有一个包含9张图像的数据库 这些图像不断变化 所以我无法直接设置src在 HTML 中 img 标签来显示 9 个图像 我必须从数据库中选择它们并相应地绑定它们 我可以使用以下命令检索并打印 1 张图像Response BinaryWri
  • std::async 可以调用 std::function 对象吗?

    是否可以使用 std async 调用使用 std bind 创建的函数对象 以下代码无法编译 include
  • 我们如何找到 C# 整数数组中的项目计数?

    我需要在 C 数组中查找类型为整数的项目计数 我的意思是 int intArray new int 10 int 0 34 int 1 65 int 2 98 intArray 的项目计数为 3 我在下面找到了 strArray 的代码 但
  • 推导具有两个以上参数的 std::function

    我想知道为什么std function http en cppreference com w cpp utility functional function只知道有两个参数的函数 我已经编写了一些运行良好的代码 但存在许多限制 欢迎任何反馈
  • Excel 中的单元格“数字存储为文本”

    我有一个 C 程序 它获取旧报告的文本文件并映射到 Excel 工作表 但对于交易单元格 它输出为 数字存储为文本 这不允许 任何格式 我们想要显示 1 000 00 但它仅显示为 1000 有什么办法可以得到这种格式吗 这些列是余额和金额
  • 静态、非成员或静态非成员函数?

    每当我有一些 实用 方向的功能时 我最终都会想知道哪个选项是最好的 例如 在我正在工作的上下文中打印消息结构 自己的或外部的 一些编码 解码代码或一些有用的转换函数 我想到的选项是 1 辅助类 结构中的静态函数 struct helper
  • 编译器如何解析在变长数组之后声明的变量的地址?

    假设我有以下函数 它使用可变长度数组 void func int size int var1 int arr size int var2 编译器如何确定地址var2 我能想到的唯一方法就是放置arr after var1 and var2
  • 有条件地使用按位运算符

    条件运算符如何使用按位运算符表示 这是一个家庭作业问题 我必须仅使用按位运算来实现条件运算符 那就很简单了 如果if允许使用语句 但它必须是严格的按位运算符 仅运营商 gt gt and lt lt 可以使用 不if可以使用语句或循环 该函
  • 为什么IL代码中stloc.0后面有一个ldloc.0?

    我正在尝试通过编写小代码片段和检查编译的程序集来学习 CIL 所以我写了这个简单的 if 语句 public static void Main string args Int32 i Int32 Parse Console ReadLine
  • Eigen 如何沿特定维度连接矩阵?

    我有两个特征矩阵 我想将它们连接起来 就像在 matlab 中一样cat 0 A B eigen 有等价物吗 Thanks 您可以使用逗号初始值设定项语法 水平方向 MatrixXd C A rows A cols B cols C lt
  • REQ/REP 模式中的 ZeroMQ FiniteStateMachineException

    我有两个简单的组件 它们应该使用 REQ REP ZeroMQ 模式相互通信 服务器 REP Socket 是使用 pyzmq 在 Python 中实现的 import zmq def launch server print Launchi

随机推荐

  • thrd_busy 和 mtx_lock()/mtx_timedlock()

    我对 C1x 互斥体有以下问题 7 25 4 哪些情况可以mtx lock return thrd busy而不是阻塞 哪些情况可以mtx timedlock return thrd busy 注意thrd busy在 7 25 1 5 中
  • React Native 初始应用程序大小太大

    我知道这个问题之前问过 但提供的解决方案不足以减少应用程序的大小 我已经使用创建了一个应用程序react native init 尚未添加任何第三方库 只是一个你好世界应用程序 但其发布版本大小为 48mb 之后我用了def enableP
  • 无法使用 Jupyter Lab 或 Jupyter Notebook 运行任何 ipynb 文件(FileNotFoundError: [WinError 2] 系统找不到指定的文件)

    我在 Win10 上运行 JupyterLab JupyterNotebook 在 Windows 10 上运行 Python 和 PyCharm 每当我启动 JupyterLab JupyterNotebook 时 都会收到下面所述的错误
  • 如何在 Chef LWRP 定义中实现动态属性默认值

    我希望能够用 3 个参数来定义一个轻量级资源 其中两个是基本 基本参数 第三个是这两个参数的组合 我还想提供自定义第三个参数的可能性 例如 如何修改以下代码以实现上述行为full name属性 资源定义 actions install at
  • 从代码设置 silverlight 模板?

    如果我的模板放置在 ResourceDictionary 中 如何从代码中设置 control Template 从根本上讲 您需要附加到控件加载事件 此时您可以分配给 Template 属性 您可以从资源字典中检索模板 例如 假设您有一个
  • 捕获 python cgi 脚本后面的 url 路径?

    如果我举个例子来解释我的问题会更好 cgi 脚本的文件名 awesome URL http omgpython com awesome http omgpython com awesome awesome 脚本正常运行 我附加了一个 假 路
  • ios页面卷曲显示视图控制器

    嗨 我想让地图视图看起来像那样 我想让右下角像这样 当我单击它时 它会启动一个模态视图控制器 这个怎么做 请参阅这个问题 当然答案 iOS 上的卷页 https stackoverflow com questions 5435547 pag
  • 如何排除工作 git 存储库中的文件夹 (Visual Studio Code)

    我使用的是 Visual Studio Code 版本 0 7 10 我想使用版本控制 我认为现在是开始自学使用 git 的好时机 我以前从未使用过它 如何让 git 忽略我的 node modules 文件夹 此文件夹中的每个项目都列出了
  • Android中如何判断SD卡是否挂载?

    我正在开发一个 Android 应用程序 需要查看用户存储了哪些图像 问题是 如果用户通过 USB 电缆安装了 SD 卡 我无法读取磁盘上的图像列表 有谁知道有什么方法可以判断 USB 是否已安装 以便我可以弹出一条消息 通知用户它无法工作
  • GLSL 纹理立方体和纹理2D 在同一着色器中

    我似乎无法两者兼得texture2D and textureCube 在一个着色器中 当我这样做时 什么也没有显示 也没有错误 我用我自己的着色器加载器和 Apple GLSL 着色器生成器尝试了这一点 并且发生了同样的事情 即使我有也会发
  • #./ 和 #. 之间的区别./

    执行脚本有什么区别 test and test 例如 测试是简单的脚本 bin bash export OWNER NAME ANGEL 12 export ALIAS angelique 我知道结果 但不确定实际发生了什么 Thanks
  • 向我指出一些*带有*(单元)测试的开源项目[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 作为参考 我正在寻找一些带有单元测试的开源项目 Edit Surely there must更多 SQLite 有一个非常全面的测试套件
  • 在什么情况下Java性能会随着内存的增加而降低?

    我们正在 DEV 环境中对 Java 1 6 应用程序进行负载测试 JVM 堆分配为 2Gb Xms2048m Xmx2048m 在负载测试下 应用程序运行流畅 从未使用超过 1 25Gb 的堆 并且垃圾收集完全正常 在我们的UAT环境中
  • 为 python 2.7 而不是 3.4 安装 numpy

    我一直在努力为 python 2 7 而不是 3 4 安装 numpy 这两个版本都在我的 ubuntu 上 我努力了 sudo pip2 安装 numpy 但它说 Requirement already satisfied use upg
  • 自动同义词检测方法

    我目前正在研究一种基于神经网络的短文档分类方法 由于我正在使用的语料库通常在十个单词左右 因此标准统计文档分类方法的用途有限 因此 我正在尝试对训练中提供的匹配实施某种形式的自动同义词检测 更具体地说 我的问题是关于解决以下情况 假设我有
  • MVC4 自定义不显眼的验证器不起作用

    不知道出了什么问题 语法似乎是正确的 但它仍然不会在客户端触发 如果我提交表单 我会得到服务器端验证 客户端什么也没有 这是页面上的代码 Scripts jquery validate min js gt Scripts jquery va
  • 如何在matlab中将向量添加到矩阵?

    如何将向量添加到 Matlab 中的矩阵中 以将向量的 i 索引添加到 i 行中的所有成员的方式 例如 A 1 2 3 4 5 6 6 7 8 v 1 2 3 所需的结果是 2 3 4 6 7 8 9 10 11 多谢 您可以使用bsxfu
  • 求大数阶乘​​的快速方法

    这是我的程序 但是对于像 100 000 这样的大数字 它的运行速度非常慢 有什么选项可以优化吗 import java math BigInteger import java util Scanner public class Main
  • python分块三对角矩阵

    我想从三个 numpy ndarray 开始创建一个块三对角矩阵 有没有任何 直接 方法可以在 python 中做到这一点 先感谢您 Cheers 对于 常规 numpy 数组 使用numpy diag http docs scipy or
  • 如何在 for_each 中组合函数和谓词?

    你怎么能打电话给Function over some容器的一部分 使用for each 我创建了一个for each if 做一个 for i in shapes if i color 1 displayShape i 电话看起来像 for