tuple
tuple是类似pair的模板,一个tuple可以有任意数量的成员,类型也可以不相同
make_tuple:返回一个用给定初始值初始化的tuple,返回的tuple类型从初始值推断
可以使用()、{}初始化但不能使用={}
tuple<size_t, size_t, size_t> three;//
tuple<int, string, vector<int>> someVal(1, "aaa", { 1,2,3,4,5 });
auto item = make_tuple("aaa", 11, 3.1415);
访问tuple
使用get得到tuple成员
tuple_size<tupleType>::value得到tuple的成员数量
tuple_element<i,tupleType>::type得到指定成员的类型
auto name = get<0>(item);//返回tuple第一个成员
auto id = get<1>(item);//返回第二个成员
get<2>(item) *= 2;//第三个成员
typedef decltype(item) trans;//trans是item的类型
auto sz = tuple_size<trans>::value;
tuple_element<1, trans>::type cnt = get<0>(someVal);
bitset
进行位运算,并且能够处理超过最长整形类型大小的为集合
bitset<32> bitvec(1U);//32位,低位为1,其他位为0
bitset<13> bitvec1(0xbeef);//二进制位序列为1111011101111
bitset<20> bitvec2(0xbeef);//二进制位序列为00001011111011101111
bitset操作
b.any() b中是否存在置位的二进制位
b.all() b中所有位都置位了吗
b.none() b中不存在置位的二进制位吗
b.count() b中置位的位数
b.size() 返回b中的位数