CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 哈希表 vs 树

    C++ SELF
    等级 25,课时 0
    解析 C++ 的关联容器:有序的 std::map(基于树,复杂度为 O(log N))与 std::unordered_map(哈希表,平均为 O(1))有何区别,什么时候键的顺序很重要,如何通过 find/ contains 安全读取,为什么 operator [] 可能会“悄悄”创建元素,以及在实践中常见的错误有哪些(以小型项目 TaskBook 的 id → Task 索引为例)。
    可用
  • set / unordered_set

    C++ SELF
    等级 25,课时 1
    解析 C++ 中的集合容器: std::set<T>(对元素进行排序)与 std::unordered_set<T>(哈希表)有什么区别,如何使用基本操作 insert, contains/ find, erase,如何快速从 std::vector 去重,以及为什么 set 中的元素不能“就地”修改。最后 — 一个实践小案例(TaskBox 中的标签)和典型错误。
    可用
  • 键的契约:map 的 operator<,unordered_map 的 hash + ==

    C++ SELF
    等级 25,课时 2
    解析 C++ 关联容器的“键契约”:为什么 std::map/ std::set 属于严格顺序的世界(比较器和 operator<),而 std::unordered_map/ std::unordered_set 属于哈希与相等的世界( std::hash + ==)。我们将看到容器如何决定“键是否相同”,为什么比较器不能用 <= 实现,以及如果改变相等但忘记同步哈希会发生什么。
    可用
  • 自定义键:struct Key、operator== 与 std::hash<Key>

    C++ SELF
    等级 25,课时 3
    解析如何为 std::unordered_map 制作复合键:设计按需字段的 struct 键,编写正确的 operator==,遵守 std::hash 的约定(如果 a == b,则哈希必须相等),混合各字段的哈希,并通过容器的第三个模板参数传入哈希器,或通过专门化 std::hash<Key> 来接入哈希。
    可用
  • 数据索引:id → 对象,标签 → 列表

    C++ SELF
    等级 25,课时 4
    讲解如何通过索引加速典型的数据查询:主索引 id → 对象,基于 std::unordered_map;以及二级索引 tag → id 集合,基于 std::unordered_map + std::unordered_set。展示“一处真实来源”的原则、统一的添加/删除/更新操作、按 id 和标签的查询,以及帮助发现不同步问题的简单不变量校验。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym