53

我正在听Andrei Alexandrescu 关于 D 编程语言的谷歌演讲,当时他发表了一篇关于“endl”惨败的文章。我只是认为 endl 是表示行尾并刷新流缓冲区的首选方式。为什么它被认为是惨败?我不应该在我的代码中使用它吗?

4

1 回答 1

79

(我假设)他只是意味着许多,尤其是新的 C++ 程序员std::endl盲目地使用而不是'\n'换行符,不必要地频繁地刷新,并可能使他们的程序的性能很糟糕。

即,大多数人都被教导这std::endl是在流中插入换行符规范方法,即使很少需要或不适合刷新它。

有些人认为(*咳嗽*)std::endl甚至不应该在标准中,因为它很少合适,而且无论如何也不会显着节省打字。'\n' << std::flush


TL;DR (s) :

  • 最后,除了通常更差的性能和更多的打字之外,std::endl什么也没有给你买。
  • 它有它的用途,但它们比它在大多数大型代码库中的使用频率要少得多,因此......
  • 它的效用是非常值得怀疑的,它的普遍存在是荒谬的——确实是一场惨败!
于 2011-03-30T21:22:45.527 回答