AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 21
深入迭代器
C++ SELF
等级 21,
课时 0
解析 STL 这一“通用语言”是如何工作的:迭代器与区间
[
first
,
last
)
。理解为什么
end()
表示“末尾之后”的边界,
begin()
/
end()
与
cbegin()
/
cend()
有何不同,如何安全地使用算法返回的迭代器(以
std::find
为例),并通过一个小项目
TaskTracker
,通过迭代器按
id
搜索任务并谨慎地处理“未找到”的情况来巩固所学。
find_if、count_if、any_of/all_of:无循环的检查
C++ SELF
等级 21,
课时 1
我们来讲解在 C++(STL)中如何在不写手工循环的情况下对数据提问:通过
std::find_if
找到第一个符合条件的元素,通过
std::count_if
统计符合条件的个数,通过
std::any_of
检查“是否存在至少一个?”以及通过
std::all_of
检查“是否全部符合?”。引入谓词(
bool
检查)的概念,讨论算法的早期终止和常见错误(检查迭代器是否为
end()
、“迭代器 vs 索引”、谓词中的副作用)。
std::accumulate:求和与简单聚合
C++ SELF
等级 21,
课时 2
讲解来自头文件
std::accumulate
(在
<numeric>
中)如何对区间做“归约”:求和、求积、字符串拼接和按条件计数。单独讨论为什么起始值
init
决定累加类型(以及如何通过
0LL
避免溢出)、如何以
op(acc, x)
形式编写自定义操作
op
,以及初学者常犯的错误。
std::sort 和比较器——排序的基础场景
C++ SELF
等级 21,
课时 3
我们来拆解 C++ 中排序的基础场景:
std::sort
是如何工作的,为什么它会在
begin()
/
end()
指定的范围上“就地”排序,如何通过比较器
bool
comp
(
const
T
&
,
const
T
&
) 指定自定义顺序,以及为什么用
<=
/
>=
来比较是一个典型陷阱。在实践中,我们会按名称、优先级以及多个条件(状态
done
+
priority
)对任务列表(
Task
)进行排序,同时还会讨论常见错误:忘记包含头文件
<algorithm>
、在比较器中产生副作用,以及对排序后索引的错误预期。
算法 vs 循环
C++ SELF
等级 21,
课时 4
分析在 C++ 中何时更适合使用标准库算法(例如
std::count_if
,
std::any_of
,
std::all_of
,
std::find_if
),何时用普通的
for
/
while
让逻辑更清晰。以小型应用
TaskTracker
为例,讨论可读性 vs 流程控制、一次遍历 vs 多次遍历,以及典型错误(尤其是迭代器结果的处理和对
end()
的检查)。
Please enable JavaScript to continue using this application.