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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 所有权 vs 表示: std::string 和 std::string_view

    C++ SELF
    等级 18,课时 0
    我们来分析在 C++ 中谁“拥有”字符串的字符,谁只是“查看”它们: std::string 和 std::string_view 有何不同、何时传递字符串会导致拷贝、轻量级 view(指针 + 长度)是如何工作的、为什么它不保证数据的生命周期,以及由于对所有权和以空终止符为前提的错误预期经常会出现哪些常见错误。
    可用
  • std::string_view 作为参数

    C++ SELF
    等级 18,课时 1
    我们来分析,在 C++ 中为“文本”函数选择参数类型时该如何取舍:为什么按值传递 std::string 可能会产生隐藏拷贝, const std::string & 与 std::string_view 有什么区别,为什么 std::string_view 通常按值传递,以及哪些操作适合在不分配内存的情况下读取/解析文本。最后,我们会做一个“不拷贝”的命令解析实战,并总结使用 string_view 时的典型错误。
    可用
  • std::span 作为连续数据的视图

    C++ SELF
    等级 18,课时 2
    我们来讲解 C++23 中的 std::span,它如何作为连续内存块上的“视图”:它与拥有所有权的容器有何不同,如何通过 const 契约和 std::span<const T> 来表达只读访问,哪些来源可以安全地构造 span(数组、 std::array、 std::vector,以及通过 data()/ size() 获取的字符串),日常最常用的操作有哪些,以及如何通过 subspan() 在不拷贝的情况下方便地切分数据。最后,我们会列出典型错误以及如何避免它们。
    可用
  • 生命周期规则:view

    C++ SELF
    等级 18,课时 3
    讲解 C++23 中针对 view 类型的重要安全技术:为什么 std::string_view 和 std::span 不拥有内存,对象的生命周期在哪里结束,本地和临时对象会带来哪些陷阱,以及如何设计函数接口(返回 view 还是 std::string/ std::vector),以避免产生悬垂引用。
    可用
  • 设计签名:string_view vs const std::string&

    C++ SELF
    等级 18,课时 4
    分析在 C++ 中函数签名如何为所有权与数据修改制定契约:何时选择 std::string_view,何时更诚实地接受 const std::string &,如何使用 std::span<const T> 为基于范围的算法提供接口,以及 view 类型常见的生命周期错误。最后我们会组装一个小的命令行框架并做一点“基于契约”的小重构。
    可用
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