从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,变量/常量定义,前向声明,类型定义结尾,这些语句后面都必须加分号,对于后面这些具体是什么,后面将会逐步学习

posted @ 2026-10-09 22:51  罗小菜  阅读(14)  评论(0)    收藏  举报