标准库类型(四)
--biteset
序言:
位是用来保存一组项或条件的yes/no信息[标识]的简洁方法。
-
#include
-
using std::bitset;
正文:
1、bitset对象的定义和初始化
和vector对象不同的是:bitset类型对象的区别在于其长度而不是类型。在定义bitest时,要在尖括号中说明给出他的长度。
-
-
bitset b;
-
bitset b(u);
-
bitset b(string);
-
bitset b(string,pos,m);
2、位集合的位置编号从0开始,但是,他的顺序是从右往左排的!以0位开始的位串是低阶位,以n结尾的是高阶位!
-
-
bitset<128> b(0Xffff);
-
bitset<32> b(0Xffff);
-
bitset<16> b(0Xffff);
-
bitset<16> b(10);
-
-
-
-
-
string str("1100");
-
bitset<16> b(str);
-
string str("1000110011101111");
-
bitset<4> b(str);
-
-
-
-
-
string str("1000110111101111");
-
bitset<32> b(str,5,4);
-
-
-
-
-
string str("1000110011101111");
-
bitset<32> b(str,str.size() - 5);
3、size_t类型
size_t类型是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小!
-
size_t sz = bitvec.size();
4、bitset对象上的操作
-
bool is_set = bitvec.any();
-
bool is_not_set = bitvec.none();
-
size_t sz = bitvec.count();
-
for (size_t i = 0;i < bitvec.size(); ++i)
-
bitvec[i] = 1;
-
for (size_t i = 0;i != bitvec.size(); ++i)
-
{
-
bitvec.set(i);
-
}
-
bitvec.set();
-
bitvec.reset();
-
for (size_t i = 0;i != bitvec.size(); ++i)
-
{
-
if (bitvec[i])
-
cout << 1 ;
-
else
-
cout << 0 ;
-
}
-
for (size_t i = 0;i != bitvec.size(); ++i)
-
{
-
if (bitvec.test(i))
-
cout << 1 ;
-
else
-
cout << 0 ;
-
}
5、获取bitset对象的值
-
unsigned long value = bitvec.to_ulong();
-
-
int main()
-
{
-
string str("00001000110011101111");
-
bitset<20> bitvec(str);
-
-
for (size_t i = 0;i != bitvec.size(); ++i)
-
{
-
if (bitvec.test(i))
-
cout << 1 ;
-
else
-
cout << 0 ;
-
}
-
cout << endl;
-
cout << bitvec << endl;
-
}
-
"276569" snippet_file_name="blog_20140405_12_2743648">
"276569" snippet_file_name="blog_20140405_13_1191269" name="code" class="cpp">"276569" snippet_file_name="blog_20140405_13_1191269">
-
-
-
-
-
-
-
-
-
转载:http://blog.csdn.net/zjf280441589/article/details/22988205
阅读(1169) | 评论(0) | 转发(0) |