Skip to content
败犬日报 2025-11-11

败犬日报 2025-11-11

1. 几乎不 (unlikely) co_await 的协程是否有性能开销

对于 std::generator 测下来可以把堆分配给优化掉,协程框架想优化掉还不行。

2. 群友同事发现筛选函数返回空会很快 crash,于是在空的情况下随便返回了一个值

这样就会 crash 在很后面,不会找到他头上。

有人问为什么这么做,只能说不要试图理解神人逻辑。

3. 为什么 unordered_map 不叫 hash_map

因为 unordered_map 是需求,hash_map 是实现方式。委员会执着于把这两个抽象层级分开,于是就变成了这样。

4. 虚指针和胖指针有啥区别

虚函数需要有访问虚表的能力,这就是虚指针。C++ 的实现是在对象里塞虚指针,会变胖的是类对象。rust 胖指针会在 dyn 动态指针里面塞虚指针,会变胖的是指针。

rust 的 trait 系统既可以泛型又能虚函数,有些对象只用到泛型,给类对象全都变胖不合适。

5. 标准库的 map 有没有非红黑树的实现

之前日报说过,std::map 接口都是直接对照红黑树量身定制的。

比如 B / B+ 树插入删除会导致迭代器失效,就做不到。

splay, treap 复杂度不对。(当然 splay 也不满足读操作线程安全)

AVL 树应该满足要求,但考虑到性能和内存占用应该不会有人用。