标准库特殊设施

一、tuple类型

1、定义和初始化tuple
类似pair,每个pair都恰好有两个成员,tuple可以有任意数量的成员;
tuple<int, int, int> t; //值初始化
tuple<size_t, size_t, size_t> t1(1,2,3); //初始值初始化
auto t = make_tuple(1,2,3); //类似make_pair函数
get<0>(t); //get标准库函数访问tuple成员,返回t的第一个成员的引用
tuple_element<1, decltype(t)>::type cnt = get<0>(t); //type为成员类型
decltype(t); //t的类型
size_t sz = tuple_size<decltype(t)>::value; //返回tuple中成员的数量
关系和相等运算符:对每对儿成员使用关系和相等运算符都必须是合法的
tuple<int, int> t1;
tuple<string, int> t2;
tuple<int, int, int> t3;
t1 == t2; //错误,不能比较string和int
t1 == t3; //错误,成员数量不同

二、bitset类型

1、初始化bitset
	用unsigned值初始化bieset
	//bs1比初始值小;初始值的高位被丢弃
	//二进制序列为1 1110 1110 1111
	bitset<13> bs1(0xbeef);
	//bs2比初始值大;高位被置0
	//二进制序列为0000 1011 1110 1110 1111
	bitset<13> bs2(0xbeef);
	//在64位机器中,OULL是64个0比特,因此~0ULL是64个1
	//0-63位为1,64-127位为0
	bitset<128> bs3(~0ULL);

	用string初始化bitset
	//bs4中第三位到第0位被设置为1100,剩余位被置为0
	bitset<32> bs4("1100");
	string s("11111111011100001100");
	//从str[5]的4个字符初始化bs5
	bitset<32> bs5(s,5,4);
	//使用最后4个字符初始化bs6
	bitset<32> bs6(s, s.size()-4);

2、bitset操作
	b.any() //b中存在置位的二进制位吗
	b.all() //b中所有位都职位了吗
	b.none() //b中所有位都复位了吗
	b.count() //b中置位的数量
	b.size() //一个constexpr函数,返回b的位数
	b.test(pos) //pos位置的位是置位吗
	b.set(pos, v) //pos位,置位v,v的默认值位1
	b.set() //b中所有位都置位
	b.reset(pos) //pos位,复位
	b.reset() //b中所有位都复位
	b.filp(pos) //pos位改变状态
	b.filp() //b中所有位都改变状态
	b[pos] //访问pos位的状态,也可改变该位的状态
	b.to_ulong() //返回一个位模式与b相同的unsigned long或unsigned long long值,如果不能放入指定结果中,则抛出overflow_error异常
	b.to_ullong()
	b.to_string(zero, one) //返回一个string,表示b中的位模式,zero和one的默认值分别为0和1
	os<<b //b的位模式打印到流os

三、正则表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值