为什么C++标准算法“count”返回difference_type而不是size_t?

2024-05-30

为什么返回类型是std::count http://en.cppreference.com/w/cpp/algorithm/count the difference_type迭代器(通常是ptrdiff_t).

因为计数永远不可能为负数,不是size_t 技术上正确的选择?如果计数超出范围怎么办ptrdiff_t因为数组理论上可能的大小可以是size_t?


EDIT:到目前为止,对于函数返回的原因还没有合适的答案ptrdiff_t。从下面的答案中收集到的一些解释是返回类型是iterator_traits<InputIterator>::difference_type这是通用的,可以是任何东西。直到那时,它才有意义。存在计数可能超过的情况size_t。然而,为什么返回类型是这样仍然没有意义typedef ptrdiff_t iterator_traits<InputIterator>::difference_type对于标准迭代器而不是typedef size_t iterator_traits<InputIterator>::difference_type.


The std::count()算法依赖迭代器类型来定义一个足够大的整数类型来表示任何大小的范围。容器的可能实现包括文件和网络流等。不能保证整个范围立即适合进程的地址空间,因此std::size_t可能太小了。

该标准提供的唯一一体式std::iterator_traits<> is std::iterator_traits<>::difference_type,它适合表示两个迭代器之间的“距离”。对于作为指针(包装器)实现的迭代器,此类型是std::ptrdiff_t。没有size_type或类似的迭代器特征,所以没有其他选择。

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

为什么C++标准算法“count”返回difference_type而不是size_t? 的相关文章

  • 使用 OpenXML 打开受保护的 Word 文档

    我到处寻找 但找不到任何答案 所有帖子和讨论都是关于创建受保护的帖子和讨论 但没有任何内容可以打开它 我在我的 c 程序中保护了 DOCX 和 DOC 文档 并希望使用 OpenXML 2 5 以编程方式打开它们 我已经使用 Office
  • OpenSSL:RSA 加密/解密、密钥生成和密钥持久性

    我正在尝试构建一个需要以下内容的 p2p 应用程序 在 OpenSSL 中使用 RSA Encryption Decryption Generating Keys done Saving and loading keys done Savi
  • 为什么这个 IA32 汇编代码有 3 个 leaal 指令?

    我编译了这个C函数 int calc int x int y int z return x 3 y 19 z 我在 calc s 中得到了这个 我正在注释正在发生的事情 file calc c text globl calc type ca
  • 动态库使用静态库,出现未定义的符号

    我一直在寻找解决问题的方法 只是得到了一些线索 但我找不到任何一致的解决方案 我有一个动态库 libdyna so 的代码 它使用3个静态库 libone a libtwo a lib Three a 和log4cpp库的功能 当我第一次构
  • MVC 2视图显示错误的模型信息

    我在一个项目中使用 MVC 2 但我遇到了视图问题 在控制器中我有代码 return View calendarDay 如果我调试这一行并检查 calendarDay 它会告诉我 calendarDay Id 属性等于 2 在视图中我有一些
  • 具有自动返回类型推导的 Friend 函数模板无法访问私有成员

    抱歉这个问题的标题太复杂了 我试图描述我为这个问题构建的最小 SSCCE 我有以下代码 include
  • 嵌套绑定表达式

    这是一个后续问题我之前的问题 https stackoverflow com questions 2735294 templates function pointers and c0x include
  • 使用 C 序列化 double 和 float

    如何在 C 中序列化双精度数和浮点数 我有以下用于序列化短整型 整数和字符的代码 unsigned char serialize char unsigned char buffer char value buffer 0 value ret
  • Motif 库的水平绘制的 RowColumn 类 (C)?

    我正在使用 Motif Library 来完成我的工作 如果有人不熟悉这个库 您可以在这里找到文件列表https packages ubuntu com xenial amd64 libmotif dev filelist https pa
  • 如何使用 CMake 链接多个库

    我有一些与 DCMTK 相关的代码 如果我从命令行使用 g 我可以成功构建并运行它 这是代码 include dcmtk config osconfig h include dcmtk dcmdata dctk h int main Dcm
  • 值类型数组如何存储在 .NET 对象堆中?

    在 NET中 诸如int之类的值类型对象存储在内存中 引用类型对象需要为引用和对象单独分配内存 并且对象存储在 NET对象堆中 而Array是在堆中创建的 那么int 等值类型的数组如何存储在堆中呢 这是否意味着值类型对象可以存储在堆中而无
  • 如何更改控制台中的光标位置?

    我想用Console ReadLine 在上一行中并使其显示如下 HeresomeText gt input Not like HeresomeText gt input 可以做吗 使用 Write 方法而不是 WriteLine 方法 C
  • 文件已创建但无法写入

    我的计划 检查Settings txt 文件 如果该文件不存在 则创建文本并自动写入其中 如果 Settings txt 文件已存在 请忽略 不要创建或写入现有文件 我的问题 当文件不存在时 Settings txt 文件会创建 但它是空的
  • 使用 MemoryCache 而不是普通的旧 Dictionary 的令人信服的理由是什么

    我刚刚遇到内存缓存 http msdn microsoft com en us library system runtime caching memorycache aspx这是 NET 4 中的新增功能 我知道如果你想的话它会很有用 限制
  • 如何在运行时统一捕捉两个对象?

    这是 3D 模型 我想将另一个像这样的模型连接到顶部的银色连接器 并将另一个模型连接到右侧 所以请帮助我捕捉它 https i stack imgur com qoWwl png我想知道如何在运行时将两个 3D 对象对齐在一起 即 在 玩
  • 如何在mvc视图中的表中显示数据库数据

    在我的 MVC 应用程序中 我从数据库检索数据 我想在表格中显示退役数据 控制器代码 public ActionResult MyAccount var user User Identity Name string sThumbnails
  • 在方法签名中使用 new 关键字通常只是为了可读性吗?

    我读过关于new关键词在方法签名中并看到了下面的例子this https stackoverflow com questions 1014295 c sharp new keyword in method signature发帖了 但还是不
  • 我如何在 WPF 中模仿这种行为?

    我对 WPF 和 C 开发相当陌生 我正在制作这个应用程序 我不知道是否有人熟悉 VOIP App Discord 但他们有一个我非常喜欢的特定行为 并且想尝试使用 WPF 创建类似的风格 当您在 Discord 上添加服务器时 单击一个按
  • 类型与创建 CLR 存储过程不匹配

    我在程序集中有一个如下所示的方法 namespace MyNameSpace public class MyClass Microsoft SqlServer Server SqlProcedure public static void M
  • 如何用纯色填充位图?

    我需要使用唯一的 RGB 颜色创建 24 位位图 分辨率 100x100 像素 并将生成的图像保存到磁盘 我目前使用的是SetPixel http msdn microsoft com en us library 6c7eyzyb aspx

随机推荐

  • XAMPP 上的 Tomcat 无法针对 JAVA_HOME 启动

    我已经阅读并尝试了很多关于 SO 的帖子 但没有人解决这个问题 我设置了 JDK 和 JRE 版本的环境变量 我在 USER 的用户变量 和 系统变量 这两个部分中添加了相同的值 我添加的变量是 JAVA HOME gt C PROGRA
  • proc函数相对于方法有什么优点

    我正在解决一些问题欧拉计划 http projecteuler net 我提到我总是将短方法包装在 proc 函数中 我问自己 Why 答案是 我不知道 也许是因为它短 那么proc函数相对于普通方法除了短之外还有什么优点呢 Proc is
  • 连接两个 Func 委托

    我有这个课程 public class Order int OrderId get set string CustomerName get set 我也声明了以下变量 Func
  • 为什么在 Windows 中缩放 WPF 应用程序时会看到像素?

    我使用 WPF 为随机应用程序开发了一个 GUI 我在应用程序窗口上放置了一堆开箱即用的 WPF 控件 我没有定制任何东西 没有使用位图等 在 Windows 7 中运行我的应用程序并使用放大镜应用程序进行缩放时 Win key Plus
  • CUDA NSight 未随 Windows 8 上的 CUDA 5.0 安装文件一起安装? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 据我所知 Nvidia 网站上没有 Nsight Eclipse 的下载链接 它说它将由 CUDA 5 安装本机安装 但并没有随CUDA安装一起安装
  • 相当于mockito中间谍的Answers.RETURNS_DEEP_STUBS

    我一直无法找到一种方法来使用 Deep Stubs 对 Mockito 中的间谍进行存根方法 我想做的是这样的 Spy private Person person retrieve person Test public void testS
  • 提升变焦不起作用

    我正在使用带有苹果风格幻灯片画廊的提升缩放功能 一切正常 然而 缩放功能会放大被滑块隐藏的隐藏图像 直到单击缩略图时它们变得可见 启动缩放插件的原始代码是 zoom 01 elevateZoom 我从其他问题中得到了下面的 JavaScri
  • 将分类变量重新编码为二进制 (0/1)

    有人可以帮助我使用ifelse 我有一个data frame dat 具有称为 Q1 的分类变量 因子 dat Q1 dat Q1编码为 1 2 3 或 4 我需要创建一个新列data new1基于以下规则 if dat Q1 3 then
  • 如何使用 Swift 循环 Array> [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给我一个 循环遍历 的例子和解释array
  • 将数据框分成相等的部分

    我有一个示例数据框 df lt data frame x 1 112 y runif 112 有没有办法打印数据框列表 其中列表的第一部分包含行1 10 第二11 20等等 直到最后 111 112 你可以使用split with rep
  • 如何解决“找不到密钥::密码”?

    I m very铁轨已经生锈了 我认为自从我使用它以来的七年里 发生了很多变化 我正在尝试设置这个示例应用程序 https iridakos com news 2015 06 21 rails sample api ui https iri
  • 在 ActionScript 2 中处理无限/巨大的世界

    在 ActionScript 2 中 如何以最小的延迟实现无限 巨大的程序生成世界 例如 在像 泰拉瑞亚 或 我的世界 这样的游戏中 处理这样一个巨大的世界的最佳方法是什么 显然 循环遍历每个块并以这种方式移动它们是行不通的 我尝试将块放入
  • OpenCV 地板分割检测

    我正在研究一种检测图像中地板的方法 我试图通过将图像缩小为颜色区域然后假设最大区域是地板来实现此目的 我们对机器人的运行环境做出一些相当广泛的假设 我正在寻找一些关于适合这个问题的算法的建议 任何帮助将不胜感激 编辑 具体来说 我正在寻找一
  • 用热图绘制 2 个变量

    我在 python 3 上 有两个变量 x 和 y 其中 x 的范围从 1 到 5 y 的范围从 0 03 到 0 7 然后我有一个方法 它接受 x 和 y 并生成标量数 我想创建一个热图类型图 其中 x 为 x 轴 y 为 y 轴 并使用
  • 在 WebAPI 操作方法中抛出 HttpResponseException 返回空 200 响应

    我正在尝试从我的应用程序返回适当的 Http 代码和响应 但我很挣扎 似乎有两种方法可以返回特定的http响应 我想要处理它的方法是抛出一个HttpResponseException public Information Get int a
  • 如何在 Python 中创建对象的副本?

    我想创建一个对象的副本 我希望新对象拥有旧对象的所有属性 字段的值 但我想要有独立的对象 因此 如果我更改新对象的字段值 旧对象不应受到影响 要获得对象的完全独立的副本 您可以使用copy deepcopy http docs python
  • 使用隧道而不是冒泡的路由命令

    我有一个自定义控件 MyControl 公开自定义命令 我想要家长Window能够调用此命令 以及所有MyControls应该对此做出反应 我已将命令添加到MyControl s CommandBindings集合 它还提供了CanExec
  • 使用 CSS 更改 svg 图像的颜色 [重复]

    这个问题在这里已经有答案了 我的 html 文件中有以下 svg 图像 img class svg src my image link svg 现在 我尝试使用以下 css 代码更改颜色 svg path fill black 然而 一切都
  • Angular,从动态创建的组件中获取ViewChild / ViewContainerRef

    有没有办法从动态创建的组件中获取 ViewContainerRef 我的动态创建的组件内部有一个 ngContent 元素 我想在动态创建后填充该元素 export class Example ViewChild content read
  • 为什么C++标准算法“count”返回difference_type而不是size_t?

    为什么返回类型是std count http en cppreference com w cpp algorithm count the difference type迭代器 通常是ptrdiff t 因为计数永远不可能为负数 不是size