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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 迭代器失效于 std::vector

    C++ SELF
    等级 24,课时 0
    解析为什么在修改 std::vector 时对元素的“绑定”(迭代器、引用和指针)会“失效”, erase 和 push_back 操作有哪些危险,如何区分真正的失效与“指向了另外的元素”,以及应当使用哪些安全惯用法(依赖 erase 的返回值、存储 id 而不是 T */ T &、通过 find_if 重新查找)。
    可用
  • std::remove_if 与 std::vector 的 erase-remove 惯用法

    C++ SELF
    等级 24,课时 1
    解析从 std::vector 批量删除元素的规范做法:为什么在循环中多次使用 erase 会导致跳过元素和多余的移动, std::remove_if 如何执行“逻辑删除”并返回 new_end,为什么尾部 [new_end, end) 不能被视为有效数据,以及第二步 erase(new_end, end) 如何把结果变为真正的删除。通过一个简单的任务追踪器示例来巩固这一惯用法。
    可用
  • 为什么在循环中使用 erase 常出错

    C++ SELF
    等级 24,课时 2
    我们来分析一下,为什么在遍历时从 std::vector 中删除元素经常会破坏遍历:迭代器失效、由于 ++ 导致元素被跳过、错误的 end() 边界,以及在多次调用 erase 时突然退化到 O(N²)。通过小型示例应用 TaskBook 和示意图可以看出 vector::erase 的实际行为,以及为什么要使用它返回的迭代器。
    可用
  • std::copy_if 和 std::transform

    C++ SELF
    等级 24,课时 3
    解析“重建数据模型”:如何在不修改原始 std::vector 的情况下安全地得到新结果(并且不使迭代器失效)。学习通过 std::copy_if(使用模式 out_end + erase)来过滤元素,以及通过 std::transform(例如从 Task → std::string)来转换元素。最后 — 常见错误:哪些位置不能通过 begin() 写入以及为什么算法不会自动“增长”向量。
    可用
  • 在 std::vector 中的三种删除策略

    C++ SELF
    等级 24,课时 4
    我们剖析在 C++ 中从 std::vector 中“删除”元素的三种实用策略:通过 erase 的单点删除、通过 erase-remove 习语( remove_if + erase)的大规模清理,以及通过 rebuild 的方法,即使用 copy_if / transform 构建新结果。在 TaskTracker 小项目中讨论可读性、尾部移动的代价以及常见错误。
    可用
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