Skip to content

败犬日报 2024-10-11

1. Pimpl

头文件这么写:

cpp
class A {
public:
    // 一些接口
private:
    class Impl;
    std::unique_ptr<Impl> impl;
};

实现细节隐藏在 Impl 中。

  • ABI 稳定:类只有 impl 一个成员,布局不变,Impl 增加成员变量不会导致使用方的重新编译。
  • 隔离,防止使用的人干坏事。

Codegen 使用 Pimpl 的比较多。

2. 一个几何题

三维空间有一些点,随机分布两个平面上(或在平面附近),如何拟合出这两个平面。

根据群友的思路:

选择合适的 5 个点,必然有 3 个点所在的平面是对的。C53=10,所以枚举这 3 个点的开销可以接受。拿掉平面附近的点,判断剩下的点是否分布在另一个平面上即可。

如何选取“合适”的 5 个点,一种做法是:考虑第 1 个点任意选,第 2 个点选与第 1 个点距离最大的点,第 3 个点选与前 2 个点距离最小值最大的点,以此类推。

3. Python Final

众所周知 Python 语法是没有常量的,但是可以用 type hint 标记:

py
from typing import Final
MAX_SIZE: Final = 9000
MAX_SIZE += 1  # Error reported by type checker

typing.Final

4. 新闻时间

据说 Kimi 准备上线能自我反省的 LLM,类似 OpenAI 的 CoT。