什么是C ++ iostream endl惨败?
当时,我正在听Andrei Alexandrescu关于D编程语言的谷歌演讲,当时他抛出了关于“endl”惨败的一行。 我只是认为endl是表示一行结束的首选方式,并为一个stream刷新缓冲区。 为什么它被认为是一场惨败? 我应该不是在我的代码中使用它?
重新发布我的评论:
(我假设)他只是意味着很多,特别是新的C ++程序员盲目地使用std::endl
而不是'\n'
换行,不必要地频繁刷新,并且可能会使他们的程序性能下降。
也就是说,大多数人都被教导说, std::endl
是插入换行符的规范方法,即使很less需要或不适合刷新它。
有些人认为(*咳嗽*) std::endl
甚至不应该在标准,因为它是很less适当的,不是一个重要的打字节省超过'\n' << std::flush
无论如何。
TL; DR (s) :
- 最后,
std::endl
没有购买任何东西,除了通常更差的性能, 通常更多的打字。 - 它有它的用途,但是它们比大多数大型代码库中使用的频率要less得多,所以…
- 它的效用是非常可疑的,它的无处不在是荒谬的 – 确实是一个失败!