败犬日报 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 树应该满足要求,但考虑到性能和内存占用应该不会有人用。