赤石科技之手写 STL bitset

· · 休闲·娱乐

#define private public
#include <bitset>
#undef private
#include <bits/stdc++.h>
const int w = sizeof(long) * 8;
int main() { 
    std::bitset<100> a;
    a._M_w[0] = 3; 
    std::cout << a[0] << std::endl; // 1
    std::cout << a[1] << std::endl; // 1
    std::cout << a[2] << std::endl; // 0
    a._M_w[1] = 5;
    std::cout << a[w + 0] << std::endl; // 1
    std::cout << a[w + 1] << std::endl; // 0
    std::cout << a[w + 2] << std::endl; // 1
    return 0;
}

bitset 内部有一个大小为 \lceil\mathrm{bits}/w\rceilunsigned long 数组 _M_w,其中 w 表示一个 unsigned long 含有的 bits 数(在 Linux 下应为 64)。

这样你就有一个手写 bitset 了。

以上信息不保证正确。同样不保证在 NOI Linux 2.0 下能过编或者正确工作。请不要在正赛中使用 bitset 或者出 bitset 题

:::align{center} < 野史几则 bitset >