本博客转自:https://originals-tz.github.io/
tuple
#include <tuple>
语法
能够把不同类型的数据组合成单一对象
语法 | 作用 |
---|---|
tuple<type1, type2, type3...typeN> t | 成员数为N,第i个成员类型是typei |
tuple<type1...typeN> t(v1...vn) | 初始化 |
make_tuple(v1...vn) | 根据实参构造一个tuple,类型根据实参推断 |
t1 == t2 | 成员完全相等则为真 |
t1 relop t2 | 使用关系运算符,前提是t1,t2的成员数目相等 |
get<i>(t) | 返回第i个数据的引用 |
tuple_size<tupleType>::value | 通过一个tuple类型初始化 |
tuple_element<i,tupleType>::type | 通过一个整型和一个tuple类型来初始化 |
定义和初始化
需要注意的是,tuple
的构造函数是explicit
,必须直接初始化
tuple<int, double, size_t> treeD;
tuple<int, string, float> tr(1, "hello", 1.3f);
使用make_tuple
auto f = make_tuple(1, 3.4f, "hello");
访问
tuple<int, string, float> tr(1, "hello", 1.3f);
auto value1 = get<0>(tr);
auto value2 = get<1>(tr);
auto value3 = get<2>(tr);
tuple_size(tupleType)::value
& tuple_element<i, tupleType>::type
typedef decltype(tr) trans;
//获取数量
size_t sz = tuple_size(trans)::value;
//获取类型
tupel_element<0, trans>::type cnt = get<0>(tr);
bitset
更方便的位运算
#include <bitset>
语法
语法 | 作用 |
---|---|
bitset<n> b | b有n位,每一位都是0,此构造函数是一个constexpr |
bitset<n> b(u) | b是unsigned long long 值u的低n位的拷贝,如果n大于unsigned long long 那么其余位被设置成0 |
bitset<n> b(s, pos, m , zero, one) | 在字符串string s的pos处开始m个拷贝,字符串s只能由0,1构成,后4个参数有默认值 |
bitset<n> b(cp, pos, m, zero, one) | cp是字符数组 |
初始化
bitset<13> bit1(0xbeef);
bitset<32> bit2("1100");
bitset<32> bit3("1100",1,3);
操作
如果bitset对象中有一个或多个二进制位置为1,则any操作返回true,也就是说,其返回值等于1;
相反,如果bitset对象中的二进制位全为0,则none操作返回true。
#include <iostream>
#include <bitset>
using namespace std;
int main(){
//bitset 使用整数初始化bitset
bitset<3> bs(7);
//输出bs各个位的值
cout<<"bs[0] is "<<bs[0]<<endl;
cout<<"bs[1] is "<<bs[1]<<endl;
cout<<"bs[2] is "<<bs[2]<<endl;
//下面的语句会抛出outofindexexception
//cout<<"bs[3] is "<<bs[3]<<endl;
//使用字符串初始化bitset
//注意:使用string初始化时从右向左处理,如下初始化的各个位的值将是110,而非011
string strVal("011");
bitset<3> bs1(strVal);
//输出各位
cout<<"bs1[0] is "<<bs1[0]<<endl;
cout<<"bs1[1] is "<<bs1[1]<<endl;
cout<<"bs1[2] is "<<bs1[2]<<endl;
//cout输出时也是从右边向左边输出
cout<<bs1<<endl;
//bitset的方法
//any()方法如果有一位为1,则返回1
cout<<"bs1.any() = "<<bs1.any()<<endl;
//none()方法,如果有一个为1none则返回0,如果全为0则返回1
bitset<3> bsNone;
cout<<"bsNone.none() = " <<bsNone.none()<<endl;
//count()返回几个位为1
cout<<"bs1.count() = "<<bs1.count()<<endl;
//size()返回位数
cout<<"bs1.size() = "<<bs1.size()<<endl;
//test()返回某一位是否为1
//flip()诸位取反
bitset<3> bsFlip = bs1.flip();
cout<<"bsFlip = "<<bsFlip<<endl;
//to_ulong
unsigned long val = bs1.to_ulong();
cout<<val;
}
正则表达式
#include <regex>
组件 | 含义 |
---|---|
regex | 一个正则表达式的类 |
regex_match | 匹配 |
regex_search | 搜索 |
regex_replace | 使用给定格式替换一个正则表达式 |
sregex_iterator | 遍历所有匹配的子串 |
smatch | 容器,保存搜索结果 |
ssub_match | string中匹配子表达式的结果 |
这个坑太大了,以后再填
随机数(random)
算了,这又是个大坑,以后再填