bitset和set总结
#bitset
##介绍
二进制,只有0 ,1
##bitset常用函数
bitset<10>bt; | |
---|---|
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从小到大的集合,即无重复元素
###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 << " ";
原文地址:https://blog.csdn.net/2301_80805258/article/details/140588447
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!