1.cin判断EOF
有两种写法
int n;
while(cin>>n)
{
}
或者
int n;
while(scanf("%d",&n)==1)
{
}
如果要输入一对数据的话就要用while(cin>>n>>m)
了,不能用scanf("%d %d",&n,&m)
在比赛中为了快速签到,会用到cin,但是cin的速度比scanf满了不少,1e5以上的数据写入可能会超时,此时建议使用scanf
2.输出小数
习惯用printf,会更加方便一点,C++格式输出要用到 < iomanip >头文件,用cout.setprecistion(int digit)
修饰精度,比较麻烦
3.bool类型
C++添加了新的基本类型bool,有true和false两个值
逻辑中用true来代替非0,false来代替0可以有效提高代码可读性
4.引用
C++中用&来创建引用,可以把引用当成一个不能改变对象的指针,也就是给变量取一个小名,在函数里面传参时用到
void NumSwap(int& x,int& y)
{
int c=a;
a=b;
b=c;
}
5.函数重载
在C++中,函数是以函数名+参数列表来进行区分的,也就是两个函数的名字可以一样,但参数列表和返回值可以不一样
int Add(int a,int b)
{
return a+b;
}
int Add(int a)
{
return a;
}
int main()
{
cout<<Add(1,2)<<endl; //3
cout<<Add(1)<<endl; //1
}
函数的部分参数可以缺省,没有提供参数的时候就是用参数的初始化值代替(用于dfs进入条件是固定的情况)
int Add(int a,int b=10)
{
return a+b;
}
int main()
{
cout<<Add(1)<<endl; //11
cout<<Add(1,2)<<endl; //3
}
7.struct
struct Member
{
int a;
Member(int aa=5)
{
a=aa;
}
};
int main()
{
Member n1=Member();
Member n2=Member(1);
cout<<n1.a<<endl; //5
cout<<n2.a<<endl; //1
}
在构造函数那边可以使用this指针:this指针的作用和用法
6.动态开辟内存(很少用)
C++中用new来动态开辟内存,new写起来更加简明一些。写题目不用释放内存,delete都不用。
但是C++不支持变长数组的,但是可以使用vector解决
int *arr=new int[10];