#include <bitset>
bitset<1000> bs; // a bitset with 1000 bits
bitset()
: 每一位都是false
。bitset(unsigned long val)
: 设为val
的二进制形式。bitset(const string& str)
: 设为 串str
。
operator []
: 访问其特定的一位。operator ==/!=
: 比较两个bitset
内容是否完全一样。operator &/&=/|/| =/^/^=/~
: 进行按位与/或/异或/取反操作。bitset
只能与bitset
进行位运算 ,若要和整型进行位运算,要先将整型转换为bitset
。operator <>/<<=/>>=
: 进行二进制左移/右移。operator <>
: 流运算符,这意味着你可以通过cin/cout
进行输入输出。
count()
: 返回true
的数量。size()
: 返回bitset
的大小。test(pos)
: 它和vector
中的at()
的作用是一样的,和[]
运算符的区别就是越界检查。any()
: 若存在某一位是true
则返回true
,否则返回false
。none()
: 若所有位都是false
则返回true
,否则返回false
。all()
: C++11 ,若所有位都是true
则返回true
,否则返回false
。-
set()
: 将整个bitset
设置成true
。set(pos, val = true)
: 将某一位设置成true
/false
。
-
reset()
: 将整个bitset
设置成false
。reset(pos)
: 将某一位设置成false
。相当于set(pos, false)
。
-
flip()
: 翻转每一位。( 相当于异或一个全是 的bitset
)flip(pos)
: 翻转某一位。
to_string()
: 返回转换成的字符串表达。to_ulong()
: 返回转换成的unsigned long
表达 (long
在 NT 及 32 位 POSIX 系统下与int
一样,在 64 位 POSIX 下与long long
一样)。to_ullong()
: C++11 ,返回转换成的unsigned long long
表达。
一些文档中没有的成员函数:
_Find_first()
: 返回bitset
第一个true
的下标,若没有true
则返回bitset
的大小。_Find_next(pos)
: 返回pos
后面(下标严格大于pos
的位置)第一个true
的下标,若pos
后面没有true
则返回bitset
的大小。
- 几乎在所有容器中,$pop$和$clear$只清除元素,不清除内存
-
$vector$ 中释放内存的方法
vector<int>().swap(vec);
-
$deque$ 的内部实现是预先占用多个连续的存储块,添加元素并不需要重新分配空间 - 因此,向$deque$两端添加/删除元素的时间复杂度很小,但是同时$deque$初始化时便会占用较大的额外空间
- 非常不推荐同时使用多个$deque$,如果一定要用(如多个单调队列),建议使用$vector$加头尾指针模拟,使用$vector.resize$初始化空间
- 以下写法在$hdu$一道$528mb$的题中
$MLE$ 了
deque<dqNode> dq[maxn]; //maxn = 1e6 + 5