修改std::map的键

2023-11-27

有没有办法修改a的keystd::map or ? 这个例子展示了如何通过重新平衡树来做到这一点。但是如果我提供一些保证密钥不需要重新平衡呢?

#include <vector>
#include <iostream>
#include <map>


class Keymap
{
private:    
    int key; // this key will be used for the indexing
    int total;
public:
    Keymap(int key): key(key), total(0)
    {}
    bool operator<(const Keymap& rhs) const{
        return key < rhs.key;
    }
    void inc()
    {
        total++;
    }
};
std::map<Keymap, int> my_index;



int main (){
    std::map<Keymap, int> my_index;
    Keymap k(2);
    my_index.insert(std::make_pair(k, 0));

    auto it = my_index.begin();

    it->first.inc(); // this won't rebalance the tree from my understanding
    return 0;
}

由于常量性,修改不会编译it->first

有什么办法可以覆盖这种行为吗?


你可以做inc常量和total mutable

class Keymap
{
private:    
    int key; // this key will be used for the indexing
    mutable int total;
public:
    Keymap(int key): key(key), total(0)
    {}
    bool operator<(const Keymap& rhs) const{
        return key < rhs.key;
    }
    void inc() const
    {
        total++;
    }
};

但你确实需要问自己为什么要这样做,mutable用得不多。

你是对的,不会发生重新平衡。

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

修改std::map的键 的相关文章

  • C++ Singleton 类 getInstance (作为 java)[重复]

    这个问题在这里已经有答案了 可能的重复 谁能给我提供一份 C 中的 Singleton 示例吗 https stackoverflow com questions 270947 can any one provide me a sample
  • 无法对 ContainsGenericParameters 为 true 的类型或方法执行后期绑定操作

    我有一个适用于所有实体的扩展 public static class EntityBaseExtensions public static T Clone
  • 如何在C编程中获取当前时间(以毫秒为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 ANSI C 测量以毫秒为单位的时间 https stackoverflow com questions 361363 how to measure time in milliseconds
  • 将 LINQ to Entities 查询中的每个项目转换为接口的最佳方法是什么?

    我有一个实现 IUser 的实体对象 User IQueryable
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • ObservableCollection 上的“Cascade”绑定,包含其他 ObservableCollection

    我有一个项目需要显示合同列表 Class Affaire 每个合约都有一个阶段列表 类别阶段 我使用绑定在 2 个不同的 ListView 中显示它们中的每一个 问题是当我从 ListView 中删除一个 Phase 时 显示 Phases
  • 优化对绑定到 DataGridView 的 DataTable 的更新

    我的应用程序中有一个显示一些数据的表单 当我第一次显示表单时 我将一些数据加载到 DataTable 中 然后将 DataTable 绑定到 DataGridView 我还启动了一个异步方法来执行一些较慢的数据库查询 当这些慢查询完成时 我
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • 使用 boost::iterator_facade<>

    我有一个链表结构 struct SomeLinkedList const char bar int lots of interesting stuff in here DWORD foo SomeLinkedList pNext 它是现有
  • F# 内联如何工作?

    对于 F 我的理解是您可以使用 inline 关键字在调用站点执行类型专门化 那是 val inline a gt b gt c when a or b static member a b gt c 约束条件是 a or b必须有一个静态成
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • 为什么Boost在“程序选项”中使用全局函数覆盖来实现自定义验证器

    这个例子 http www boost org doc libs 1 55 0 doc html program options howto html idp163429032显示一个名为validate在全局范围内定义重载函数boost
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • 适用于 Windows 的键值数据库?

    除了 MongoDB 和 Memcached 之外 Windows 上还运行哪些键值存储 我见过的大多数似乎只能在 Linux 上运行 Hypertable Redis Lightcloud 相关链接 是否有经过商业验证的云存储 Key g
  • C语言:如何获取使用strtok()一次后剩余的字符串

    我的字符串是 A B C D E 分隔符是 如何获取执行 strtok 一次后剩余的字符串 即 B C D E char a A B C D E char separator char b strtok a separator printf
  • 将函数作为函数参数传递

    Unity C 似乎无法识别Func lt gt 作为函数委托的符号 那么 如何将函数作为函数参数传递呢 我有一个想法Invoke functionName 0 可能有帮助 但我不确定它是否实际上立即调用该函数 或者等待帧结束 还有别的办法
  • 序列化时如何跳过 xml 声明?

    我正在尝试输出一个没有 xml 头的 xml 文件 例如 我试过 Type t obj GetType XmlSerializer xs new XmlSerializer t XmlWriter xw XmlWriter Create c
  • RabbitMQ + Windows + LDAP 无需发送密码

    我正在尝试在 Windows 7 上使用 RabbitMQ 3 6 2 进行 LDAP 身份验证 授权 我已经在应用程序发送用户名 密码的情况下进行了基本身份验证 但密码位于我需要弄清楚如何进行的代码中避免 有没有人在不提供密码的情况下成功
  • Azure Function App Azure 服务总线触发器触发两次

    我使用带有服务总线触发器的 Azure Function Apps 来读取服务总线并对服务总线消息的内容执行操作 服务总线接收 JSON 序列化对象 然后将 JSON 消息反序列化回 Function App 中的对象 然而 由于某种原因

随机推荐

  • SSL:为什么 Chrome 会报告混合内容? (德鲁帕尔 6)

    我刚刚有一个网站运行良好 整个网站都通过 SSL 运行 但 Google Chrome 抛出一条 此页面包含一些不安全元素 消息 这对于最终用户的可信度来说并不好 所有其他浏览器都工作正常 并给出金色挂锁 该网站是一个 Drupal 6 电
  • 在 Windows 上为 Mac OS X 开发?

    嗯 简单的情况 我碰巧是一名软件工程师 主要使用 Delphi 和 C 进行软件开发 Delphi 非常适合桌面应用程序 而 C 则非常适合与 ASP NET 结合用于 Web 应用程序 不过 我正在考虑自学更多有关 Mac 软件开发的知识
  • 在 Internet Explorer 中查看 HttpOnly 会话 cookie

    使用 Internet 选项 我可以看到所有持久 cookie 使用开发人员工具 我可以看到所有 JS 可访问的会话 cookie 似乎没有办法查看 HTTPOnly 会话 cookie 在 Firefox 中 有许多选项 内置选项和 Fi
  • 如何从android代码中知道路由器的IP地址?

    如何从代码中找到路由器的IP地址 网关地址 WifiInfo getIpAddress 返回设备的 IP 地址 在 shell 命令中 ipconfig 不返回任何值 这是我的解决方案 但如果有更好的方法 请告诉我 WifiManager
  • Matplotlib 按分类因素散布颜色

    我有一个基本的散点图 其中 x 和 y 是浮动的 但我想根据第三个分类变量更改标记的颜色 分类变量是字符串形式 这似乎引起了一个问题 要使用 iris 数据集 这是我想我会使用的代码 Scatter of Petal x df Petal
  • 去模板名称

    In the html template and text template 包 template New有以下签名 func New name string Template 到底是什么name用于 我已经扫描了文档 以及一些源代码 但无
  • 是否可以在主机上运行部分作业,在从机上运行另一部分?

    我是詹金斯的新手 我有一个要求 我需要在主节点上运行部分作业 而在从属节点上运行其余部分 我尝试在论坛上搜索 但找不到与此相关的任何内容 是否有可能做到这一点 如果没有 我将不得不将其分成两个单独的工作 EDIT 基本上我的工作是从 svn
  • MAC地址在C代码中的表示

    我经常在 C 代码中看到这样的 MAC 地址表示 struct mac addr unsigned char bytes 6 为什么需要将数组放入结构体中 为什么不直接使用数组呢 这有什么好处 Thanks 您不能在 C 中分配数组 但可以
  • 警告:缺少参数 1

    我的 php 代码遇到一些问题 所有信息都返回 但我无法弄清楚为什么会收到错误 对于我的索引页 我只包含了实际使用该类的代码行 除了一些包含之外 实际上没有其他代码 我确信这就是我构建 contstruct 的方式 但我不确定这样做的适当方
  • 向左而不是向右溢出

    我有一个 divoverflow hidden 其中我在用户键入时显示电话号码 div 内的文本向右对齐 并且当文本向左增长时 传入字符将添加到右侧 但是 一旦文本太大而无法放入 div 中 数字的最后一个字符将被自动裁剪 用户将无法看到她
  • Paypal 嵌入式流程不使用 returnUrl 或 cancelUrl

    我正在使用 Paypals 自适应支付和嵌入式流程功能通过迷你浏览器提供结账服务 在沙箱环境中 一切似乎都工作正常 除了付款成功完成后 用户永远不会重定向到我在 PAY API 请求中设置的 returnUrl 我的cancelUrl 也是
  • React Apollo 客户端不发送 cookie

    我尝试按照 Apollo 客户端上的说明与 graphql 请求一起发送 cookie 但是 Express 服务器没有收到任何 cookie 并且当我检查请求时 它显示没有随响应一起发送 cookie 关注此页面 https www ap
  • 使用 util 模式自动装配列表会出现 NoSuchBeanDefinitionException

    我有一个 bean 我想使用 Spring util 命名空间注入一个命名列表
  • 如何使用 Sprite Kit 在 iOS 中创建 alpha 遮罩

    我想要达到的效果是在黑暗区域中有一个光圈 其效果类似于口袋妖怪游戏中的效果 当你处于黑暗的洞穴中并且周围的视野有限时 根据我的尝试和阅读 我无法在具有 alpha 级别的精灵套件中的节点上创建遮罩 我设法创建的蒙版都有硬边 而且基本上只是裁
  • ANTLR4:如何读取字符串中的双引号转义双引号?

    在ANTLR v4中 我们如何像VBA中那样解析这种带有双引号转义双引号的字符串 对于文本 some string with john doe in it 目标是识别字符串 some string with john doe in it 是
  • 我收到这个错误! [函数外的“return”语句]

    我正在为客户创建一个表单验证器并遇到这个奇怪的错误only在 Internet Explorer 资源管理器 7 8 中 函数外部的 return 第 1 行 字符 1 当然 第一行没有任何代码 这是一个简单的注释语句 无论如何 这并没有什
  • Java Hashmap:如何从值中获取键?

    如果我有这个价值 foo and a HashMap
  • Matlab GUI 应用程序中的软件工程和模式? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我被要求使用 Matlab 和 GUIDE 开发一个简单的 GUI 应用程序 它将与单独的后端引擎 也是 Matlab 交互 我有 Java 和 Net 背景 Matlab 文档
  • 将 google 时区转换为 .net 时区

    我正在使用这个 string url string Format https maps googleapis com maps api timezone json location 0 1 timestamp 1374868635 sens
  • 修改std::map的键

    有没有办法修改a的keystd map or 这个例子展示了如何通过重新平衡树来做到这一点 但是如果我提供一些保证密钥不需要重新平衡呢 include