发现元素何时插入到 std::map

2023-12-01

我的程序正在将一些数据[地址]插入(使用 [] 运算符])到 std::map 中。我可以跟踪 137 个元素的插入。它们都插入了有效值。

在某个阶段,我迭代地图并尝试对值[地址]进行一些操作 我在开始迭代地图之前设置了一个断点。 当我在调试器中检查地图时,我仍然看到 137 个元素。但是当我迭代它直到

iterator != map.end我发现该地图有 138 个值 - 最后一个是非法的。

我需要找到一种方法来检测何时插入最后一个有问题的值。我使用 VS 2010。

谢谢


您可以仅为了调试而替换std::map带有隐藏的包装类std::map::insert具有打印出调试信息的成员函数。

#include <map>
#include <iostream>
#include <utility>
#include <string>

template<class Key, 
         class Value, 
         class Compare = std::less<Key>, 
         class Allocator = std::allocator<std::pair<const Key, Value>>>
struct wrap_map : std::map<Key, Value, Compare, Allocator>
{
  typedef std::map<Key, Value, Compare, Allocator> base_type;

  std::pair<iterator,bool> insert( const value_type& value )
  {
    std::cout << "Inserted: [" << value.first << "] : " << value.second << std::endl;
    return base_type::insert( value );
  }
};

int main()
{
  wrap_map<int, std::string> mymap;

  mymap.insert( std::make_pair( 10, std::string( "Hello, World!" ) ) );
  std::cout << mymap[10] << std::endl;
}

Output:

Inserted: [10] : Hello, World!
Hello, World!

您必须为任何其他重载创建重载std::map::insert您在代码中使用的,以及std::map::operator[]如果你用它来将元素插入到地图中。

您还可以打印出宏,例如__LINE__指示插入发生的位置。

注意std::map没有虚拟析构函数,因此如果您动态分配映射,那么使用此方法可能会导致未定义的行为,除非您将各处的类型名称替换为wrap_map.

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

发现元素何时插入到 std::map 的相关文章

  • boost::interprocess 准备好迎接黄金时间了吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个由内存映射文件支持的线
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • 此插件导致 Outlook 启动缓慢

    我正在使用 C NET 4 5 开发 Outlook Addin 项目 但部署后 有时 Outlook 会禁用我的插件 并显示此消息 这个插件导致 Outlook 启动缓慢 我不知道我的插件出了什么问题 这只有很少的代码 并且ThisAdd
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 首先EntityFramework数据库 - 类型映射 - 将binary(8)从SQL映射到C#中的int

    在 SQL 内部 我有一个主键为二进制 8 的表 当我使用该表添加到我的模型中时Update Model from Database我可以看到该列有 type Binary 在 C 中 我将该列设为byte 我可以将该列映射到 int 吗
  • 使用 Microsoft Graph 创建用户

    如何使用 Microsoft graph 创建用户 因为我在保存过程中遇到了权限失败的问题 我确实有几个问题 在图中调用创建用户 API 将在哪里创建用户 是在 Azure AD 还是其他地方 我尝试通过传递 json 和必需的标头来调用创
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • 在非指针变量和类成员上放置 new

    考虑以下示例 include
  • AspNetCore.SignalR:无法启动未处于初始状态的连接

    我无法让 ASP NET Core SignalR 应用程序正常运行 我有这个服务器端代码 public class PopcornHub Hub private int Users public async Task BroadcastN
  • ASP.NET Web API Swagger(Swashbuckle)重复OperationId

    I have a web api controller like below In swagger output I am having the below image And when I want to consume it in my
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • IEnumerable.比带中断的 for 循环更快吗?

    我们的代码打开表单时遇到了一些缓慢的情况 这可能是由于for循环与break这需要很长时间才能执行 我把它切换到IEnumerable Any 并看到表格很快打开 我现在试图弄清楚是否单独进行此更改会提高性能 或者是否正在访问Product
  • fscanf 和 EOF 中的否定扫描集

    我的文件中有一个以逗号分隔的字符串列表 姓名 1 姓名 2 姓名 3 我想跳过所有逗号来阅读这些名字 我写了以下循环 while true if fscanf file my string 1 break 然而 它总是比预期多执行一次 给定
  • Unity 2.0 和处理 IDisposable 类型(特别是使用 PerThreadLifetimeManager)

    我知道类似的问题被问过好几次 例如 here https stackoverflow com questions 987761 how do you reconcile idisposable and ioc here https stac
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • Crypto++ 和压缩 EC 密钥

    如何在 Crypto 中生成压缩的 ECDSA 密钥 AutoSeededRandomPool prng ECDSA
  • 计算两个日期之间的工作日数?

    在C 中 如何计算business 或工作日 两个日期之间的天数 我以前曾经遇到过这样的任务 并且我已经找到了解决方案 当可以避免的时候 我会避免列举其间的所有日子 这里就是这种情况 正如我在上面的一个答案中看到的那样 我什至没有提到创建一
  • C# 中成员访问中的问号是什么意思?

    有人可以向我解释一下以下代码中会员访问中的问号是什么意思吗 它是标准 C 的一部分吗 尝试在 Xamarin Studio 中编译此文件时出现解析错误 this AnalyzerLoadFailed Invoke this new Anal
  • XmlDocument Save 使文件保持打开状态

    我有一个简单的 C 函数 可以创建一个基本的 XML 文件并保存 private void CreateXMlFile string Filename string Name string Company XmlDocument doc n

随机推荐

  • 带单选按钮的 Android 颜色选择器

    我想创建一组单选按钮来选择颜色 像这样的东西 我怎样才能实现这样的目标 我在原始 RadioButton 上没有找到任何颜色属性 我必须创建自定义控件吗 如果是 有人可以提示我基本步骤 以便我可以尝试一些新的研究吗 我对 Android 很
  • 如果连续行之间的差异满足条件,则计算列的总和

    这是帖子中的一个持续问题如果第二行满足条件 则从每组中删除第一行 下面是一个示例数据集 df lt data frame id c 9 9 9 5 5 4 4 4 4 4 20 20 Date c 11 29 2018 11 29 2018
  • Oracle触发器更新同一个表

    我有一个触发器 我试图用它来更新它侦听的同一个表 但是 在提交创建或更新后 我收到以下错误 ORA 04091 table username ADDRESSES is mutating trigger function may not se
  • 无法保留 DStream 以供下一批使用

    JavaRDD
  • C# 和 Java 之间的 Base64 区别

    image是图像文件的字符串 我的 C 代码如下 Convert ToBase64String image 并用Java编写代码如下 org apache commons codec binary Base64 encodeBase64 i
  • 在 R 中的所有列名称中替换多个句点[重复]

    这个问题在这里已经有答案了 我有以下数据框 df data frame a dfs 56 c rep a 8 rep b 5 rep c 7 rep d 10 b fqh 28 rnorm 30 6 2 c 34 2 fgs rnorm 3
  • 在 Python 中解析 CS:GO 脚本文件

    我正在使用 CS GO 中的一些脚本文件 我必须从该文件中获取一些有用的信息并将这些数据导入到我的 python 应用程序中 以下是txt数据格式的示例 https steamcdn a akamaihd net apps 730 scri
  • 为什么枚举常量没有链接?

    我试图理解的联系enumeration constants并且在标准中找不到明确的答案N1570 6 2 2 p6 以下标识符没有链接 声明为的标识符 是对象或函数以外的任何东西 声明的标识符 作为函数参数 对象的块作用域标识符 声明时不带
  • 根据季度观察计算年化回报

    我正在尝试从两个回报系列计算年化季度回报 给定一个向量 r a 这相当容易 r a lt c 05 02 03 08 1 04 06 08 r a lt t t r a I just need to transpose the vector
  • 在 RecyclerView 视图上捕获 KeyEvent

    按照以下说明进行操作this博客文章 我能够跟踪垂直列表适配器上的选定项目 但我无法通过按某个键来单击或长单击任何项 目 我创建了这个方法 public static boolean isConfirmButton KeyEvent eve
  • 如何在装配中比较两个浮点数

    我 在装配方面完全是新手 我想比较两个变量 浮点数 并正确跳转到正确的函数 这是一场乒乓球比赛 它是用 FASM 编写的 The right pad P0x dd 0 9 P0y dd 0 05 P1x dd 0 95 P1y dd 0 2
  • 使用提交按钮 AJAX 实时检查可用性

    测试1 php
  • 我们可以在Azure网站或虚拟机中运行windowservice或EXE吗?

    我有使用 Azure 上的云服务 托管服务的经验 然而 关于另一个项目 我对功能的选择感到困惑 我有一个项目 2层asp net应用程序 我需要运行windowservice或exe 它每天都会执行一些功能 如获取数据 所以我的困惑如下 关
  • 按列组合 CSV 文件

    假设我有两个 CSV 文件 名为A and B in Python A s head好像 headerNameA1 headerNameA2 1 12412424 1 1 1 1 1 1 1 B s head好像 headerNameB1
  • 调用 getExtra 时 Boolean 将自身重置为 false

    当我为 isDeleted 布尔值调用 getExtras getBoolean key 时 它不断将自身设置为 false 即使我传递的是 true 关于为什么会发生这种情况的任何见解 我尝试了很多其他方法 但没有成功地保持布尔值 TRU
  • 无法加载从笔尖引用的“my-icon.png”图像(iPhone)

    我收到以下错误消息 2011 02 11 14 47 13 815 myProject 13177 207 Could not load the icon troubleshoot png image referenced from a n
  • Tegra 3 设备上的 OpenGL 扩展

    我想知道新的 Tegra 3 设备上有哪些新的 OpenGL ES 扩展 有人愿意发布他们的设备名称 OpenGL 版本和扩展列表 仅限 Tegra 3 设备 吗 我认为其他开发人员也可以使用它 在 Android 上 您可以执行以下操作
  • JPanel 中的多个动画(线程)

    我正在尝试用 Java 编写棋盘游戏 我有 11 个类 包括主类 Board 类 扩展 JPanel 并绘制棋盘图像和骰子图像 Player 类扩展了 JCoponent 并实现了 Runnable Thread 每个玩家实例都是一个在棋盘
  • 使用 CarrierWave 和 Rails 设置 Froala WYSIWYG 编辑器

    我一直在努力让 Froala 充分利用我的 Rails 设置 我有一种类似博客的应用程序 其中包含与每个帖子相关的帖子和 图像 class Post lt ActiveRecord Base has many images accepts
  • 发现元素何时插入到 std::map

    我的程序正在将一些数据 地址 插入 使用 运算符 到 std map 中 我可以跟踪 137 个元素的插入 它们都插入了有效值 在某个阶段 我迭代地图并尝试对值 地址 进行一些操作 我在开始迭代地图之前设置了一个断点 当我在调试器中检查地图