1.结构体重载
struct T{
int a,b;
bool operator <(const T &t) const{//重载小于号,
if(t.a!=a) return a<t.a;//当a<t.a的时候a优先于t.a
return b<t.b;//同理;
}
};
一般结构体排序的时候,可以使用重载,优先队列默认是大根堆,重载方法与其他重载方法相反即可
2.lambda表达式
一般格式[](){
....
}
[]是捕获列表,()是参数列表,{}里面是具体语句;
//计算长度为5的所有二进制数;
const auto dfs=[](auto self,int n,string s){
if(n==5) {
cout<<s<<'\n';
return;
}
self(self,n+1,s+'0');
self(self,n+1,s+'1');
};
dfs(dfs,0,"");
3.istringstream
istringstream可以将整个句子中的每个单词分离出来
string s;
getline(cin,s);
istringstream is (s);
string cur;
while(is>>cur){
cout<<cur<<'\n';
}
//附加:
string p="1234";
/常用stoi和atoi函数;
int num=stoi(p);//stoi用与string转数字;
cout<<num<<endl;
char c[10]="12345";
int num1=atoi(c);//atoi用于char数组转数字;
cout<<num1<<endl;