AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 59
遍历容器时的删除
C++ SELF
等级 59,
课时 0
我们来分析为什么在“行进中”删除元素经常会破坏容器遍历,会如何产生跳过元素和无效迭代器,以及在 C++ 中应该使用的安全模式:
it
=
c
.
erase
(
it
)。将这种方法与通过
std::erase_if
/erase-remove 进行的批量过滤进行比较,查看其在
std::vector
、
std::list
、
std::map
、
std::set
中的适用性,并通过来自小型应用 TaskBook 的示例加以巩固。
std::vector, std::deque, std::list
C++ SELF
等级 59,
课时 1
我们来讲解三种顺序容器 C++:
std::vector
、
std::deque
和
std::list
。将根据关键操作(索引、遍历、插入/删除、通过
push_front
/
push_back
在两端工作)比较它们,并学习根据操作特性而非“感觉”来选择容器。
迭代器失效
C++ SELF
等级 59,
课时 2
我们来分析在 C++ 中什么是迭代器/引用/指针失效,以及为什么 STL 容器在修改后会“破坏”这些绑定。实践上我们将比较
std::vector
、
std::deque
和
std::list
的行为,讨论内存重分配、元素移动和节点删除的影响,并巩固一些安全的模式,例如
it = erase(it)
、事先调用
reserve()
以及保存稳定的
id
而不是“长期”迭代器。
容器适配器 std::stack、std::queue、std::priority_queue
C++ SELF
等级 59,
课时 3
我们来分析为什么在 C++ 中需要容器适配器,以及它们与“普通容器”的区别:比如
std::stack
实现了
LIFO
模型,
std::queue
—
FIFO
,而
std::priority_queue
总是根据比较器返回“最优”元素。我们通过接口
push()
,
top()
/
front()
,
pop()
,以及通过
empty()
的安全检查来巩固理解,并观察如何通过
std::greater<T>
或自定义比较器改变优先规则。
回顾 Big‑O
C++ SELF
等级 59,
课时 4
解析 Big‑O 作为性能的“指南针”:什么是输入规模
N
,为什么在复杂度估计中忽略常数,以及即使在同一容器内部不同操作的成本也可能不同(例如,
std::vector
:访问
v
[
i
]
与 通过
insert
插入 的成本差异)。比较
vector
/
deque
/
list
,讨论插入与删除,适配器(
stack
,
queue
,
priority_queue
)以及在评估场景复杂度时常见的错误。
Please enable JavaScript to continue using this application.