我正在听Andrei Alexandrescu 关于 D 编程语言的谷歌演讲,当时他发表了一篇关于“endl”惨败的文章。我只是认为 endl 是表示行尾并刷新流缓冲区的首选方式。为什么它被认为是惨败?我不应该在我的代码中使用它吗?
问问题
10787 次
1 回答
79
(我假设)他只是意味着许多,尤其是新的 C++ 程序员std::endl
盲目地使用而不是'\n'
换行符,不必要地频繁地刷新,并可能使他们的程序的性能很糟糕。
即,大多数人都被教导这std::endl
是在流中插入换行符的规范方法,即使很少需要或不适合刷新它。
有些人认为(*咳嗽*)std::endl
甚至不应该在标准中,因为它很少合适,而且无论如何也不会显着节省打字。'\n' << std::flush
TL;DR (s) :
- 最后,除了通常更差的性能和更多的打字之外,
std::endl
什么也没有给你买。 - 它有它的用途,但它们比它在大多数大型代码库中的使用频率要少得多,因此......
- 它的效用是非常值得怀疑的,它的普遍存在是荒谬的——确实是一场惨败!
于 2011-03-30T21:22:45.527 回答