C++ 数据结构与算法
STL 就是这条路径的库版本:std::vector、std::unordered_map、std::priority_queue 和 std::set 分别是动态数组、哈希表、堆和平衡树。先用 C++ 的类和指针亲手实现每一种,再去使用 STL,清楚每次调用的开销。位运算也直接用 C++ 教。免费,在浏览器中学习,大多数课程都有证书。
394 节课284 个挑战702 道测验题
- 适合初学者
AI 辅助编程帮助
动手实践的互动课程
每节课都有语音讲解
检验所学的测验
终点有一张路径证书,沿途还有 23 张
C++ 数据结构与算法,一步一步来
每一步都是 Coddy 上现有的一组课程,每个“开始”按钮都会用 C++ 打开它们。暂时还不是用 C++ 教的两门课程列在步骤之后。
- 1
- 2
- 3
- 4
- 5
- 6
在实践中学习
编写真实代码、查询数据库、搭建网站、掌握 AI 提示词。我们的互动课程涵盖现代开发者需要的每一项技能。
打造你的连胜
坚持下去,看着自己不断进步!记录每天的编程习惯,用冻结天数保护连胜,每天打卡都能赢取奖励。
12 天连胜
明天再来,保持你的连胜!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
加倍或归零
第 5 天,共 7 天
连胜冻结
2 left
随时随地写代码
随时随地继续你的编程学习旅程!无需配置,无需下载:打开就能写代码。支持 iOS、Android 和 Web,评分高达 4.9 星。
你并不孤单
在全球排行榜上一较高下,邀请好友赢取奖励,为彼此的成就喝彩。和好友一起编程更有趣!
多种学习方式
阅读、收听、自我测验、问 AI,或者查阅学过的任何内容。每节课都配合你的节奏。
变量是一个有名字的容器,用来存储值,方便你在程序后面引用。
在 Python 中,创建变量只需写下名字、一个等号,再写上要存储的值。
值可以随时间变化。给这个名字重新赋值,它就会指向新的值。
获得证书
每完成一门课程都能获得证书。把证书添加到你的 LinkedIn 个人资料和简历中,向雇主展示你的编程能力。
为什么在 Coddy 用 C++ 学数据结构与算法
- 算法竞赛的通用语言。大多数算法竞赛选手用 C++,看中的是它的速度和 STL,几乎所有编程面试也都接受它。用 C++ 学数据结构与算法,就是在学竞赛题解所用的那门“方言”。
- 看得见的指针。C++ 中的链表就是节点和指针,AVL 旋转就是几次指针调整,析构函数负责释放你分配的内存。你会按机器存储它们的方式来学习这些数据结构,然后再交给 STL 去做。
- 位运算就用它本来的语言学。这条路径的位运算课程本身就用 C++ 教,所以在这里它不是绕路:掩码、移位和位运算技巧,都用你正在写的语言来学。只有动态规划和 Python 面试系列不是:它们用 Python 教,列在步骤之后。
- 像面试一样评分。每节课都以一个由测试用例检查的 C++ 挑战结束;没通过时,Bugsy 会读你的代码,引导你找到修复方法,而不是直接给出答案。大多数课程都有免费证书,每张都有自己的验证网址。
C++ 数据结构与算法常见问题
C++ 适合学数据结构与算法吗?
它是算法竞赛中最常见的选择,用来准备面试也很有优势:速度快,标准库几乎涵盖你需要的所有数据结构。代价是代码更多、出错的方式也更多,从悬空指针到失效的迭代器。像这条路径一样先亲手实现这些数据结构,那些问题就不会再让你措手不及。
STL 容器分别对应哪些数据结构?
std::vector 是动态数组;std::stack 和 std::queue 是适配器,默认基于 std::deque;std::list 是双向链表;std::unordered_map 和 std::unordered_set 是哈希表;std::priority_queue 是二叉堆(默认是大顶堆,这一点和 Python、Java 不同);std::map 和 std::set 是平衡二叉搜索树,实际上一般是红黑树。STL 没有字典树或图容器,这些要你自己写。数据结构应该自己实现,还是直接用 STL?
std::unordered_map 的查找平均是常数时间、为什么 std::map 的键是有序的,之后就处处使用 STL。在竞赛或面试中,没有人指望你手写一棵红黑树;大家期望的是你能选对容器,并且清楚它的开销。学数据结构与算法用 C++ 还是 Python?
如果你打算参加算法竞赛,或者面试的岗位要求 C++,就选 C++;如果你想用最短的路径把想法变成能运行的代码,就选 Python。算法本身完全一样,所以很多人用一种语言学习,用另一种语言参赛。这条路径上的每门数据结构课程都同时提供这两种语言。
这条路径上哪些课程不是用 C++ 教的?
std::vector 或 std::unordered_map。开始这条路径之前需要会 C++ 吗?
std::vector。如果这些还没学过,Coddy 的 C++ 课程会先讲清楚,而且免费,这条路径就从它结束的地方接着往下走。完成数据结构与算法路径能获得证书吗?
能。完成每一步,你就能获得整条数据结构与算法路径的一张免费证书。证书会列出你沿途完成的每门课程,并链接到每门课程各自的证书,任何人都能核实上面列出的每项技能。你可以把它添加到 LinkedIn 个人资料。这是 Coddy 颁发的结业证书,不是经过认证的学历资格。