优雅的STL

同属优雅的系列。致力于整理优雅、清晰的处理手法,以及一些注意事项

本篇记录了使用 C++ STL 刷题时的一些心得。

容器导致的迭代器 / 指针失效

蓦然回首,那迭代器 / 指针已经挂了!等待你的是 heap-use-after-free

auto arr = vector<int>(1, 1);
auto it = arr.begin()
arr.push_back(1);
*it;  // BOOM! Heap use after free

容器扩容时偷偷搬家了,房东就不要拿原来的水电气单子去收钱了,会变得不幸。

用索引来记录是一个不太完美的解决方案。

或者,提前预判搬家后迭代器该指向什么位置。仍然不完美,只能处理部分情况。

完美的解决方案?404 not found。