C++ 函数消抖

函数消抖 指在短时间内连续多次调用同一函数,仅最后一次调用生效。

形如:

1auto debouncedFn = debounce(fn, 100);

通常将需要消抖的函数封装成一个新的函数,新的函数进行延迟后调用原函数:

C++ 容器内元素重复析构的问题

说明

std::vector 这种连续空间的容器,当空间不足时需要整体重新分配内存,并将旧的数据迁移过去。 首先会使用 std::move_if_noexcept 尝试进行移动。 因此如果元素类型的移动构造函数没有标明 noexcept 则不会被调用。 之后会通过 std::uninitialized_copy 尝试进行拷贝。

这是因为移动中如果产生异常,部分源数据已经被移动,将无法恢复原状。而拷贝中如果发生异常,源数据不应改变,只要返回失败即可。

在 enum class 中使用 bitmask 组合的方法

可以通过重载 | 运算符实现 bitmask 组合,例如:

1enum class SystemNamespaceType
2{
3    MOUNT   = CLONE_NEWNS,      // Mount Namespace
4    UTS     = CLONE_NEWUTS,     // UNIX Time-Sharing Namespace
5    IPC     = CLONE_NEWIPC,     // Inter-Process Communication Namespace