为什么我不能将 const 映射结构传递给 C++ 中的函数?

2024-01-10

我尝试将 const 传递给它有效的向量: 前任:

void damn(const vector <bool> &bb)
{
    for (int i=0; i<bb.size(); i++)
        cout<<bb[i]<<endl;

}

但是当尝试使用地图时,它不会:

void pas(const map <string, float> &mm)
{
    cout<<mm["a"];
    cout<<mm["b"];
}

我想知道为什么没有。


map::operator[]有点奇怪。它这样做:

  1. 寻找钥匙。
  2. 如果找到,请将其归还。
  3. If not, 插入它并默认构造其关联值。
  4. 然后返回对新值的引用。

步骤 3 不兼容const尼斯。而不是有两个不同功能的operator[]重载,语言强迫你使用map::find for const对象。

或者,人们可能会争辩说,什么会map::operator[] const如果参数不在地图中怎么办?抛出异常?未定义的行为? (毕竟,这就是vector::operator[]索引越界。)无论如何,这个问题都被避免了,只给我们带来了一点不便。

my_map.find(key)回报my_map.end() if the key没有找到。

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

为什么我不能将 const 映射结构传递给 C++ 中的函数? 的相关文章

  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • 可访问性不一致:参数类型的可访问性低于方法

    我试图在两个表单之间传递一个对象 基本上是对当前登录用户的引用 目前 我在登录表单中有一些类似的内容 private ACTInterface oActInterface public void button1 Click object s
  • 我可以在“字节数”设置为零的情况下调用 memcpy() 和 memmove() 吗?

    当我实际上没有什么可以移动 复制的时候 我是否需要处理这些情况memmove memcpy 作为边缘情况 int numberOfBytes if numberOfBytes 0 memmove dest source numberOfBy
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 在 React.js 中的 render return() 中显示获取结果

    我的问题是关于如何在渲染 return 中显示数组结果 我提取了 API 现在得到的结果存储在数组中 我需要显示这个结果 但我尝试在返回值中使用 for 但它不起作用 我还尝试了 map 和map is undefined fetch ur
  • 即使设置 SameSite=None 后,Safari 也不发送 cookie;安全的

    我们的应用程序使用 cookie 来记住用户登录 我们进行的每次身份验证 API 调用 浏览器都会将服务器设置的 HTTPonly cookie 附加到 API 请求并获得身份验证 Mojave 发布后 这种行为似乎在 Safari 中被打
  • java: TreeSet 顺序

    通过这段代码我得到这个输出 TreeSet
  • 如何获取文件名的路径部分?

    我想在 MATLAB 中获取文件名的路径部分 例如dirname http en wikipedia org wiki Dirname and basename http en wikipedia org wiki Basename在Lin
  • 有什么方法可以解决 FileSystemInfo.Fullname 有时抛出的 PathTooLongException 吗?

    我的硬盘上有一些文件会引发PathTooLongException当我访问Fullname的财产FileSystemInfo目的 有什么办法可以解决这个问题 不包括重命名文件 这不是一个选项 http msdn microsoft com
  • 如何在 Puppeteer 中重新加载页面?

    每当页面无法正确加载或遇到问题时 我想重新加载页面 我试过page reload 但它不起作用 for const sect of sections Now collect all the URLs const appUrls await
  • JavaScript 作用域和闭包

    我正在尝试解决闭包问题 某处有一个笑话 我遇到了这个 function do cool stuff 这是如何运作的 将函数放在括号中的目的是什么 为什么后面的括号是空的 这样做的要点是 在很酷的东西中声明的任何变量都不会在全局命名空间中创建
  • 如何使用Entity Framework Code-First执行CRUD?

    我在更新和删除与 EF Code first 的多对多关系时遇到了很大的困难 我有一个相当简单的模型 public class Issue Key public int IssueId get set public int Number g
  • Colspan + 删除多列后单元格宽度相等

    附言 如果可能的话 我更喜欢用 CSS 来解决这个问题 但如果没有办法 我也可以使用 JQuery 但没有其他库 好的 这是一个扩展我之前的问题 https stackoverflow com questions 9115878 equal
  • 为什么不提供一个操作员? :在斯卡拉[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 子域的索引文件

    我终于能够设置子域 但现在当我尝试单独访问子域时遇到问题 例如 当我访问 sub domain com 时 我收到页面未找到错误 但是 当我访问 sub domain com index php 时 我会看到我的页面 我的理论是 当我访问
  • logcat 警告“ 下的未知元素:元数据”是什么意思?

    在运行新安装的应用程序时 我发现这个Warninglogcat 中的消息 W PackageManager 1233 Couldn t remove dex file for package at location data app xx
  • 在scapy中发送ICMP数据包并选择正确的接口

    我们可以对第 3 层 ICMP 数据包使用 srp 函数吗 我发现当我们制作 ICMP 回显请求数据包并使用 sr 发送 接收时 我们没有看到它从接口发送出去 因此目的地没有响应 但是 如果我们使用 srp 函数 我们会看到相同的数据包响应
  • 在 C++ 中调用 Visual Basic DLL,第 2 部分

    这个问题是上一个问题的后续问题 here https stackoverflow com questions 3679967 calling a visual basic dll in c 我从第三方供应商那里获得了一个用 Visual B
  • 如何正确使用fetch?

    我现在正在处理我的申请 我正在尝试使用 fetch 来登录页面 但即使阅读一些代码示例 我也不太明白如何使用 fetch 有人可以帮我得到吗 例如 我必须使用这些信息登录我的服务器 用户名 用户 密码 1234 然后我希望服务器返回登录成功
  • Flink REST API错误:请求与预期格式JarRunRequestBody不匹配

    尝试使用下面的 REST API 远程运行 Flink 作业 但抛出错误 curl X POST H Content Type application json data type object id urn jsonschema org
  • 使用 JaCoCo Gradle 插件测试 Android 代码覆盖率

    我是 Gradle 和 Android 测试新手 但我已经将我的 Android 项目转换为使用 Gradle 进行构建 现在我正在尝试使用 Gradle 的 JaCoCo 插件对 Android 项目进行测试覆盖 我已将以下内容添加到我的
  • 简单形式 I18n 标签

    大家好 在我的应用程序中 我构建了一个搜索框 它看起来像这样 simple form for cars url cars path method get do f f input handover location collection L
  • 从无显示更改为阻止时转换不起作用

    我注意到了transition当元素也从以下位置更改时不起作用display none to block 这是为什么 如果我删除它就可以了display属性 CSS box width 150px height 150px backgrou
  • 为什么我不能将 const 映射结构传递给 C++ 中的函数?

    我尝试将 const 传递给它有效的向量 前任 void damn const vector