C++ 向量大小类型

2024-04-02

我刚刚开始学习 C++,有一个关于向量的问题。 我正在读的书指出,如果我想提取 double 类型向量的大小(例如),我应该这样做:

vector<double>::size_type vector_size;
vector_size = myVector.size();

而在Java中我可能会这样做

int vector_size;
vector_size = myVector.size();

我的问题是,为什么有一个名为 vector::size_type 的类型?为什么C++不直接使用int呢?


C++ 是一种用于库编写的语言*,允许作者尽可能通用是其关键优势之一。更通用的方法不是规定标准容器使用任何特定的数据类型,而是规定每个容器公开一个size_type会员类型。这允许更大的灵活性和通用性。例如,考虑以下通用代码:

template <template <typename...> Container, typename T>
void doStuff(const Container<T> & c)
{
  typename Container<T>::size_type n = c.size();
  // ...
}

这段代码将适用于any容器模板(可以使用单个参数实例化),并且我们不会对代码的用户施加任何不必要的限制。

(实际上,大多数尺寸类型将解析为std::size_t,这又是一个无符号类型,通常unsigned int or unsigned long——但是为什么我们必须知道这一点呢?)

*) I'm not sure what the corresponding statement for Java would be.

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

C++ 向量大小类型 的相关文章

  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • 如何在 MFC 中调整对话框大小时移动控件?

    我已经在 MFC 中创建了对话框视图 从下图中可以清楚地看到 如滑块控件和编辑框等 当我调整对话框大小时 这些控件不会移动 在此输入图像描述 https i stack imgur com 7OxAK jpg 我想移动控件以适应对话框 但不
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • C++ 非类型参数包扩展

    我正在编写由单一类型参数化的模板函数 并且具有可变数量的相同类型 而不是不同类型 的参数 它应该检查第一个值是否在其余值中 我想这样写 include
  • 具有多重继承的类的 sizeof

    首先 我知道 sizeof 取决于机器和编译器的实现 我使用的是 Windows 8 1 x64 gcc 5 3 0 没有标志传递给编译器 我从大学讲座中得到了以下代码 include
  • 'goto *foo' 其中 foo 不是指针。这是什么?

    我正在玩标签作为值 https gcc gnu org onlinedocs gcc Labels as Values html并最终得到这段代码 int foo 0 goto foo 我的 C C 经验告诉我 foo means dere
  • Azure 2012 年 10 月 SDK 损坏 UseDevelopmentStorage=true

    有人尝试过使用 usedevelopmentstorage true 连接字符串的 2012 年 10 月 Azure sdk 吗 CloudStorageAccount Parse UseDevelopmentStorage true 抛
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • C 中“for”循环中的两个变量

    我正在编写一些代码 需要在其中使用两个变量for环形 下面的代码看起来没问题吗 它确实给了我预期的结果 for loop 1 offset loop 2 offset 2 loop 1 gt offset 190 loop 2 lt 190
  • 如何防止字符串被截留

    我的理解 可能是错误的 是 在 C 中 当你创建一个字符串时 它会被实习到 实习生池 中 这保留了对字符串的引用 以便多个相同的字符串可以共享操作内存 但是 我正在处理很多很可能是唯一的字符串 一旦完成每个字符串 我需要将它们从操作内存中完
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • 为什么 std::ranges::filter_view 对象必须是非常量才能查询其元素?

    include
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • 如何解释“错误C2018:未知字符'0x40'?[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在编译一些代码时 我收到以下信息 错误 C2018 未知字符 0x40 我想知道如何解决这样的问题 这是我要开始的地方
  • 我应该使用多个 HttpClient 来进行批量异步 GET 请求吗?

    我有一个场景 我需要在尽可能短的时间内发出大量 GET 请求 想想大约 1000 个 我知道通常最好保留一个客户端并尽可能重用它 Create Single HTTP Client HttpClient client new HttpCli
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString

随机推荐

  • 如何使用boost多精度生成正态随机数?

    我正在尝试使用 boost 的多精度从正态分布生成随机数 我可以从均匀分布生成随机数 但是当我尝试从标准正态分布生成随机数时 它报告错误 这是代码 以下来自来自 boost 的示例 http www boost org doc libs 1
  • Django 使用整数字段作为外键字段

    为了支持旧的 遗留 数据库 我们必须创建一个使用的表整数字段 as a 外键 to User表 这就是我们的模型的样子 class UserHistory user id models IntegerField null True blan
  • FusedLocationProviderClient requestLocationUpdates 不会触发上述 API 23 的 LocationCallBack

    我已经用尽了所有可能的方法来解决这个问题 在对我的应用程序进行调整之前 从技术上讲 我使用的是在 API 23 及更高版本中运行的相同代码 回调 在请求位置更新中 不在手机中触发 棉花糖及以上 但它在模拟器中运行良好 使用 Pixel 2
  • 有按钮栏的视图吗? (描述视图的图像链接)

    我正在寻找有关 Android 默认应用程序中底部栏的视图或某种信息 例如电子邮件或解锁图案 如下图所示 我在 Android 网站或 Google 搜索中找不到任何有关此内容的信息 Image http img11 imageshack
  • 使用Python编写Parquet文件的方法?

    我无法找到允许使用 Python 编写 Parquet 文件的库 如果我可以结合使用 Snappy 或类似的压缩机制 那就加分了 到目前为止 我发现的唯一方法是将 Spark 与pyspark sql DataFrame镶木地板支持 我有一
  • MVC 操作被调用两次

    我有一个MVC Action Method如果请求需要时间才能完成 则会被点击两次 在检查 chrome 控制台网络日志和 fiddler 时 该请求仅从 JS 发送一次 在下图中 我面临这个问题Approach 1 但是 如果我这样做的话
  • Django“DecimalFields 必须定义“decimal_places”属性。”

    我的模型字段之一如下 aaf 1kg all models DecimalField blank True null True 当我正常使用我的模型时 一切都很好 当我在一个ready hook https docs djangoproje
  • java中的虚方法调用是什么?

    我在一些计算机科学测试中看到了下一段 我希望我能在这里得到它的含义的一个很好的解释 因为我用谷歌搜索了一个小时 但找不到任何东西 当我们说 Java 语言有虚方法调用我们的意思是 在java应用程序中 执行的方法是由运行时的对象类型决定的
  • 获取console.log()显示自定义对象描述

    我有一个自定义的 JS 对象来表示网格 对于这个例子来说 它看起来像这样 function Grid c r var layout var contentPointer 0 this getCell function c r Return
  • 在 TVML 应用程序中更改 XMLHttpRequest 的用户代理

    我正在使用 TVMLKit 开发 Apple TV 应用程序 我的应用程序的 JavaScript 代码尝试使用以下命令向服务器发送 HTTP 请求XMLHttpRequest 服务器需要特定的用户代理 所以我尝试了以下方法 var req
  • Android 视频视图中缓冲区达到 20% 后如何开始(播放)视频

    我有一个视频视图 可以使用来自服务器的 url 来播放视频 我希望在缓冲达到 20 时播放视频 所以我已经将 setOnBufferingUpdateListener 的侦听器添加到媒体播放器中 如下所示 Uri video Uri par
  • 如何为 php 安装 hiphop?

    大多数开发人员都了解 Facebook 的 Hiphop for php 我想在我的脚本中使用它 但不知道从哪里开始 我应该与我的服务器提供商联系吗 或者我需要在脚本中添加一些代码吗 HipHop 很难安装 但幸运的是我刚刚经历过它 您需要
  • 相当于 Python 中 Julia 中的“with”?

    Julia 有与 Python 相当的东西吗 with 也许作为一个宏 这非常有用 例如 自动关闭打开的文件 Use a do堵塞 关于 do 块的文档是here https en wikibooks org wiki Introducin
  • 使用 VSTO 将数据加载到 Microsoft Project 时如何提高性能

    背景 我们有一个现有的应用程序 可以将数据加载到 Microsoft Project 中 以便可以由 MS Project 进行操作 原始应用程序是由 VB6 编写的旧式 COM 项目加载项 针对 MS Project 2003 2007
  • 启用 SSL 刷新 URL 时出现 React-router 问题

    目前 我在使用 React router 的 BrowserHistory 和 nginx 代理转发请求时遇到问题 我读过以下答案 React router url 在刷新或手动写入时不起作用 https stackoverflow com
  • Ninject:每个被拦截的类实例有一个拦截器实例?

    我目前遇到一个问题 尝试为每个被拦截的类实例连接一个拦截器实例 我正在 InterceptorRegistrationStrategy 中创建 Advice 并设置回调以解析来自内核的拦截器 它有一个注入构造函数 请注意 我只能在回调中实例
  • 即使没有来自客户端的连接,选择器也会无限循环

    我是 Java NIO 的新手 在阅读了一些教程后 我尝试自己编写一个简单的 NIO 服务器和客户端 我的服务器只做了一件简单的事情 就是从客户端监听并打印到控制台 客户端只需连接到服务器并向其发送 3 条消息 Hello 问题是我的服务器
  • .NET / C# 拼写检查器

    有人知道 C NET 的多语言拼写检查器吗 我的意思是 我有它和我找到了一些替代方案 但是有人有一个很好的成功故事吗 我需要在我的应用程序中添加拼写检查器 我想要一个集成的库System Windows Forms TexBox 例如 另外
  • 使用 std::codecvt_xxx 将 C++ std::wstring 转换为 utf8

    C 11有转换宽字符字符串的工具std wstring从 到 utf8 表示 std codecvt std codecvt utf8 std codecvt utf8 utf16 etc Windows 应用程序可使用哪一个来转换常规宽字
  • C++ 向量大小类型

    我刚刚开始学习 C 有一个关于向量的问题 我正在读的书指出 如果我想提取 double 类型向量的大小 例如 我应该这样做 vector