从Hello World开始学算法竞赛
这篇文章将从零开始拆解c++最基础的语法,首先,我们贴上大多数人最开始会写的代码
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello!World";
return 0;
}
首先我们看这份代码的第一行,理解他的具体含义c/c++的分离编译模式,这玩意讲起来就比较深奥了,所以我们用简单的方式去理解
\(#include<>\)就是直接引入一些代码,这些东西是前人已经帮你写好了的内容,<>里面就是你要引入的代码,比如这份代码里面的iostream就包含了我们用到的cout
大家可以在自己的编辑器里面按住ctrl,然后鼠标点击头文件,就能够看到头文件里面的代码
在这里提一句,竞赛里有个被称为万能头的东西\(#include<bits/stdc++.h>\)
他里面基本上包含了算法竞赛所需要的所有头文件,大家可以只打这一个,当然,本人更喜欢需要什么头文件就打什么
然后我们看这份代码的第二行,第二行的意思就是使用标准的名字空间
那么什么是名字空间呢?
在c语言里面,会有这么一种情况:系统里面有一个函数是max,但是你定义的变量也叫max,此时编译就会失败,因为名字重了,编译器就不知道这个max到底是函数还是变量
在某些很大的项目里面,重名的情况是难以避免的,所以c++就提出了namespace的概念,在不同的namespace可以定义相同的名字,只要使用的时候说明这个来自哪个namespace就行了
但是在算法竞赛里面,我们不用写很大的项目,所以重名的时候我们直接修改其中一个的名字就行了,所以我们一般会直接使用c++库函数的标准的namespace,就是里面的\(std\)
然后避免与std里面重名就行了,所以会在第二行直接引入std这个namespace
那如果我们没有using直接引用名字空间还能使用std名字空间里的内容吗?
答案是肯定的,格式简单为: 名字空间::引用内容
例如,上述代码如果不直接using,可以写成
#include<iostream>
int main()
{
std::cout<<"Hello!World";
return 0;
}
就如上面的格式一样std::cout,就是从std这个名字空间里使用了cout这个内容
那么,由于我们此时没有直接引用std,所以我们可以定义变量名是cout,例如
#include<iostream>
int cout=10;
int main()
{
std::cout<<cout;
return 0;
}
我们会发现程序是可以正常运行的,因为没有引入std的话cout并不是一个函数名,可以用来定义变量
那么同理,引入了std后也可以定义变量名为cout,只要我们定义一个新的名字空间就行了,例如
#include<iostream>
using namespace std;
namespace my
{
int cout=10;
}
int main()
{
cout<<my::cout;
return 0;
}
在这里,我们虽然引入了std,但是又自己新建了一个namespace,my,在my这个名字空间里cout是个变量,所以我们可以从里面调用,就仍然可以把cout当作变量名
此时来到第三行,第三行就是主函数了
那么什么又是主函数呢?
主函数是C++程序的唯一入口点,程序从这里开始执行,并在结束时返回一个整数值给操作系统或调用程序,用于表示程序的执行状态
通俗点说,你的程序将会从主函数开始运行,结束时会返回一个整数值,倒数第二行的\(return 0\)就是返回0的意思,对于这个返回值,我们不需要管太多,因为算法竞赛要求主函数要返回0
而两个花括号的内容就是函数的内容给括起来
最后我们还没有理清楚的就只有一行了
\(cout<<"Hello!World";\)
这行的意思是输出一个字符串,内容为Hello!World
不涉及任何底层,简单的讲cout就是输出,后面跟<<表示要输出的内容,一个<<只能输出一个内容
""是用于定义字符串常量,简单理解就是表示""里面的东西不变
所以\(cout<<"Hello!World"\)就会输出Hello!World
但如果我们改成cout<<"Hello!""World";,就会出问题
因为一个<<只能输出一个内容,此时<<后面加了两个"",所以会出问题
只需要改成cout<<"Hello!"<<"World";就没有问题了
此外,c++的语法还有一点要求,可以看到我们的\(cout\)那一行的最后会有一个分号,在c++代码中,普通执行语句,例如上面的cout,变量/常量定义,前向声明,类型定义结尾,这些语句后面都必须加分号,对于后面这些具体是什么,后面将会逐步学习

浙公网安备 33010602011771号