竞赛中的 cpp 细碎点
为什么写这个
最近有一些朋友问我一些 cpp 的问题,而这些东西,他们在入门竞赛的时候是不会学的,但是这些也挺有趣,所以放在这里,给有心人看看。
std::endl
顾名思义,结束。
他会做两件事情:
- 换行。
- 将缓冲区的内容输出到屏幕上。(也就是刷新缓冲区)
为了性能考虑,你往 cout
传的参数会先存到一个缓冲区内,当你调用 std::flush
的时候就会刷新。
不必担心一直不刷新的情况,因为当你程序销毁的时候,缓冲区会自动刷新,这也就是说,程序结束的时候,你一定能在屏幕上看到输出了的东西。
一般情况下,缓冲区也不会爆,因为但缓冲区满了之后,就会自动刷新。
换行是从很久以前就约定俗成的操作,这样便于一些程序(比如 git)在读取文件的时候判断是否读完等。 细心的同学会发现,当你调用一些格式化程序格式化你的代码的时候,往往也会在文件末尾加一行空行。