C++基础
by 幻夜的梦
C++是很复杂的语言,但打算法竞赛只需要一点点知识即可,与其说是C++,不如说是C语言+STL
万能头文件与命名空间
请背下来这两句代码,C++是兼容C语言的,洛谷刷题选C++
#include <bits/stdc++.h>
using namespace std;
#define int long long
把全部的int 改成long long类型,很多算法题都会经常爆int,所以我们直接加上这句话,这是良好的算竟习惯。
但是,加上这句话后,主函数不能使用int main()了,会报错,当然有很多题目不卡long long,这个时候你就可以用int main()。那么加上后有两种修改方式:signed main() 或者直接 main()
signed main(){ }
main(){ }
那么以后写算法题,就可以先敲出来标准的一个框架:
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
//具体内容
return 0;
}
C++输入输出
这里主要介绍C++的输入输出cin与cout,cin>> 与cout<<的好处是可以连续输入输出,比较方便:
比如:cin>>a>>b>>c>>d; cout<<a<<“ ”<<b<<endl;
在万能头文件下cin、cout 可以与scanf、printf结合使用。
//输入a b,输出a+b,最后换行
//C语言风格:
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
//C++风格:
int a,b;
cin>>a>>b;
cout<<a+b<<endl; //endl是换行的意思,你也可以cout<<'\n';
//保留小数问题用printf方便,比如保留3位小数:
double x;cin>>x;
printf("%.3lf",x);
数组大小定义
要看题目的范围,比如n最多到10^5,则定义数组一般要比这个大一点点,一般+5,防止运行错误。
const int N=1e5+5;
int a[N];//定义在main函数之前的全局变量数组全部默认赋值为0
//如果学了STL的动态数组vector,可以这样定义:
int n;cin>>n;
vector<int> v(n+5,0)//比输入的n大5,前面长度,后面赋值。
结合for循环输入输出
很多时候结合for循环输入输出很方便。
比如一道题:输入n,第二行输入n个数,输出这n个数的总和。1<=n<=200000。完整代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int a[N];
signed main(){
int n;cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int sum=0;
for(int i=1;i<=n;i++){
sum+=a[i];
}
cout<<sum;
return 0;
}