bitset
介绍
二进制,只有0 ,1
bitset常用函数
bitset<10>bt; | 10是个空间 |
---|---|
cout<<sizeof(bt)<<‘\n’; | 不管定义多大,一直都是4; |
bt.count() | 含有多少1 |
bt.set (4) | 就是把从右至左第5个数赋为1 |
bt.reset() | 所有1,变变为0 |
bt.flip() | 0变1,1变0 |
bt.none() | 是否有1,有返回0 |
bt.any() | 有1,返回1; |
bt.test() | 测试某一位是否为1,是返回1,不是返回0 |
bitset<11>bt(1234) | |
cout<<bt<<endl; | 二进制 |
bitset<11>bt(“1010101010”); | 字符串 |
cout<<bt<<endl; | 输出和定义的一样 |
bt.to_ulong() | 十进制 |
bt.to_string ()以字符形式输出 | 以字符形式输出 |
bt=bt1 | 不能大于小于 |
右移两位 | 比如定义a=10,10的二进制是1010,a=a>>2,右移两位变为10,二进制10十进制等于2 |
a=~a | “~”取反位01010会变为11011最右边的一位其实是表示正负的,0正1负 |
set
介绍
set从小到大的集合,即无重复元素
其他类型的set
multiset:可以重复,并且有序
unordered_set :元素无序且只能出现一次
unordered_multiset : 元素无序可以出现多次
set常用函数
s.begin() 第一个元素的地址(迭代器)(1) | |
---|---|
s.end() 最后一个元素的下一个地址(迭代器)O(1) | |
s.rbegin() 返回逆序迭代器,指向元素最后一个位置O(1) | |
s.rend() 返回逆序迭代器,指向第一个元素前面的位置O(1) | |
s.clear() 删除容器中所有的元素,返回unsigned int类型O(N) | |
s.empty() 判断set容器是否为空O(1) | |
s.insert() 插入一个元素 | |
s.size() 返回当前set容器中的元素个数O(1) | |
erase(iterator) 删除定位器iterator指向的值 | |
erase(first,second) 删除first和second之间的值 | |
erase(key_value) 删除key_value的值 | |
s.find(element) 查找set中的某一元素,有则返回该元素对应的迭代器,无则返回结束迭代器 | |
s.count(element) 查找set中的元素出现的个数,由于set中元素不重复,即查询是否出现 | |
s.lower_bound(k) 返回大于等于k的第一个元素的迭代器O(logN) | |
s.upper_bound(k) 返回大于k的第一个元素的迭代器O(logN) |
- 迭代器
for(set<int>::iterator it = s.begin(); it != s.end(); it++)
cout << *it << " ";