“equal”模板功能是如何实现的? (谓词版本)

2024-03-21

我正在阅读《Accelerated C++》一书,其中一个练习要求我们模拟标题中的“equal”函数,到目前为止,我已经实现了简单的版本,它采用三个参数,如下所示:

template <class iterType1, class iterType2>
bool cequal(iterType1 begin, iterType1 end, iterType2 e){

    while(begin != end){
        if(!(*begin == *e))
            return false;
        ++begin;
        ++e;
    }
    return true;
}

第二个版本可以接受第四个参数......

template <class iterType1, class iterType2, class boolPred>
bool cequal(iterType1 begin, iterType1 end, iterType2 e, boolPred pred){

    while(begin != end){
        if(!pred(*begin, *e))
            return false;
        ++begin;
        ++e;
    }
    return true;
}

我的问题是,这是理想的方法吗?或者这两个功能可以合并吗?


第一个版本可以调用第二个版本,传递一个equal_to http://www.cplusplus.com/reference/std/functional/equal_to/对象作为最后一个参数。 或者您可以将其设置为默认参数。 我收回这句话。我实际上无法找到一种为函数模板提供默认参数的方法。我什至无法弄清楚如何在不使用 c++0x 功能(decltype)的情况下重用重载解决方案中的代码。

template <class iterType1, class iterType2>
bool cequal(iterType1 begin, iterType1 end, iterType2 e){
    return cequal(begin, end, e, std::equal_to<decltype(*begin)>());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“equal”模板功能是如何实现的? (谓词版本) 的相关文章

  • 什么定义了类型的大小?

    ISO C 标准规定 sizeof char lt sizeof short lt sizeof int lt sizeof long 我在 BIT Linux mint 19 1 上使用 GCC 8 大小为long int is 8 我正
  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • 信号与信号2

    我的应用程序可能会受益于使用 boost 的信号库之一而不是本土解决方案 该应用程序是多线程的 但执行信号处理的部分是单线程的 如果多线程不是问题 是否有任何理由更喜欢 Boost Signals2 而不是 Boost Signal Boo
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 对 ExecuteNonQuery() 的单次调用是原子的

    对 ExecuteNonQuery 的单次调用是否是原子的 或者如果单个 DbCommand 中有多个 sql 语句 那么使用事务是否有意义 请参阅我的示例以进行说明 using var ts new TransactionScope us
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • C# 中 PKCS11Interop 库的线程安全使用 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 PKCS11Interop 在 HSM 内执行密钥管理操作 我使用的 HSM 是 Thales PCI Express 下面是
  • 我可以将 char 或 DateTime 设置为 null 吗?

    我可以将 null 设置为char数据类型 并且DateTime在 C 中 多谢你们 这是不可能的 它是一个值类型 使用 char myChar null DateTime myDate null 这相当于 Nullable
  • C++ 指针和对象实例化

    这有效 MyObject o o new MyObject 而这并不 MyObject o new MyObject Why 关键词new 返回一个指针 http msdn microsoft com en us library kewsb
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 原子存储抛出错误

    我最近升级到了 C 11 兼容编译器 并且尝试将一些代码从 boost 更新到 c 11 标准 我在使用atomic store转换一些代码时遇到了问题 这是一些简单的测试代码 似乎会引发编译器错误 int main std shared
  • asp.net core http 如果没有内容类型标头,则删除 `FromBody` 忽略

    我在 http 中使用 bodyDELETE要求 我知道目前删除主体是非标准的 但是允许的 使用时出现问题HttpClient它不允许删除请求的正文 我知道我可以使用SendAsync 但我宁愿让我的 API 更加灵活 我希望这个机构是可选
  • 实体框架读取列但阻止其更新

    给定一个数据库表 其中有一列包含历史数据但不再填充 实体框架中是否有一种方法可以读取该列 但在使用相同的模型对象时防止它被更新 例如我有一个对象 public class MyObject public string CurrentData
  • 展开 std::reference_wrapper 的成本

    Given include
  • 如何在控制台程序中获取鼠标位置?

    如何在 Windows 控制台程序中用 C 获取鼠标单击位置 点击时返回鼠标位置的变量 我想用简单的文本命令绘制一个菜单 这样当有人点击时 游戏就会注册它并知道位置 我知道如何做我需要做的一切 除了单击时获取鼠标位置 您需要使用 Conso
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 为什么 C++ 标准没有将 sizeof(bool) 定义为 1?

    Size of char signed char and unsigned char由 C 标准本身定义为 1 个字节 我想知道为什么它没有定义sizeof bool also C 03 标准 5 3 3 1 说 sizeof char s
  • 检查一个数是否是完全平方数?

    我认为以下代码存在精度问题 bool isPerfectSquare long long n long long squareRootN long long sqrt n 0 5 return squareRootN squareRootN
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用

随机推荐

  • JSP/GlassFish:如何正确设置 UTF-8 编码

    我正在寻求帮助 将堆栈中的所有层都转换为 UTF 8 编码 我发现这篇好文章 http www javapractices com topic TopicAction do Id 206 http www javapractices com
  • AWS - 错误 504 - 网关超时 - Flask 应用程序

    昨天 我在 Amazon Elastic Beanstalk 上部署了我的第一个 Flask 应用程序 应用程序正在运行 但当我按下启动抓取过程的按钮时出现问题 这个过程相当长 可能需要大约 3 4 分钟 显然在我按下按钮一分钟后 我收到了
  • 在 Microsoft SQL Server 中从十六进制文字插入 varbinary 值

    我有一个 SpringBoot 应用程序 我使用 jdbcTemplate 将一行插入到 mssql int numOfRowsAffected remoteJdbcTemplate update insert into dbo ELCOR
  • Python - 用 ASCII 字符替换 unicode 表情符号

    我当前的周末项目之一有问题 我正在编写一个 Python 脚本 它从不同来源获取一些数据 然后将所有内容输出到 esc pos 打印机 正如您可能想象的那样 POS 打印机并不完全喜欢表情符号 所以文本如下 可爱 给我这个字符串 u53ef
  • 如何在带有配置文件的 Powershell 脚本中使用自定义 WCF 代理?

    我在它自己的程序集中有一个手写的 WCF 代理 它非常简单 public class MyServiceClient ClientBase
  • 通过shields.io徽章添加SonarQube覆盖范围

    我有 com github xxxxxx xxxxxx Maven 存储库 我想添加盾牌徽章 但我有一个无效徽章 https img shields io sonar https sonarqube com com github norau
  • GMAIL SMTP:对 SSPI 的调用失败异常 - 不支持请求的功能

    我正在使用 gmail smtp 发送邮件 主机 smtp gmail com 端口 587 在 MVC 应用程序中使用 gmail smtp 发送邮件时出现异常 以下代码用于发送邮件 public static int SendMail
  • Three.js 的外观似乎被翻转了

    我这里有一个演示 测试场地 http www myuplay com game test html or Backup http direct myuplay com game test html 由于某种原因 即使鼠标矢量是正确的 我的对
  • R - 检测到非树模型!此功能只能与树模型一起使用

    我是 R 新手 当我尝试跑步时xgb importance 我得到这个 Error in xgb model dt tree feature names feature names text text Non tree model dete
  • 当父溢出更改时,firefox 过渡会中断

    我今天遇到一个问题 花了我很长时间来调试 我在网上找不到解决方案 所以我认为记录下来会很有用 如果父级的 溢出 属性与转换一起更改 则转换似乎在 Firefox 上不起作用 即 parent overflow hidden parent h
  • 在 MVC 4 中将对象转换为 JSON

    我正在使用将对象转换为 JSONJavaScriptSerializer我可以在服务器代码中看到这个 JSON 输出 UserId 1 UserName Admin 但在用户界面中它被转换为如下所示 quot UserId quot 1 q
  • 不能在常量列表中使用变量索引

    使用设备建模语言 DML 1 4 版 我创建了一个列表参数 例如 param X 0 0 0 0 0 1 我想在使用变量的方法中访问它们 例如 method get var uint32 idx gt uint32 return X idx
  • 如何通过 ID 以外的方式获取 RESTful 资源?

    在某些情况下 我可能需要通过 ID 以外的参数来查找对象 正确的 RESTful 方法是什么 例如我可能想找到一个User by username and password 所以严格的 RESTful GET users 1 行不通 根据R
  • 加速 WPF 调整大小/重绘

    我注意到即使调整空 WPF 窗口的大小也会显示黑色区域 我桌面上的很多程序都没有这些问题 所以我想知道 有没有办法设置调整大小重绘优先级或其他东西 并加快 WPF 窗口大小的调整速度 或者这个问题是不可避免的 这是 WPF 工作方式的继承
  • Java 加密替代硬编码密钥

    我是加密新手 我查看了 javax crypto 文档并使用此代码对文件进行了加密 File saveFile new File Settings set saveFile delete FileOutputStream fout new
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • p2p0是android中WIFI DIRECT的无线接口吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我打印 Android 设备中的所有接口时 03 10 19 50 15 484 I System out 22415 lo 03 10
  • PyQt 4 UI 冻结

    下面的程序应该只是累加和 int 并在标签中显示其值 但过了一会儿 GUI 停止工作 而循环继续 from PyQt4 import QtGui QtCore import sys class main window QtGui QWidg
  • JavaScript 中的“可绑定”变量?

    从我对 Flex 的一点经验中 我了解了可绑定变量 例如 文本元素的内容会随着变量的值而变化 我想知道是否可以在 JavaScript 中做这样的事情 例如 假设我有一个 h1 我想包含文档的标题 这可以很容易地完成document get
  • “equal”模板功能是如何实现的? (谓词版本)

    我正在阅读 Accelerated C 一书 其中一个练习要求我们模拟标题中的 equal 函数 到目前为止 我已经实现了简单的版本 它采用三个参数 如下所示 template