53

Andrei Alexandrescu による D プログラミング言語に関する Google トークを聞いていたとき、彼は "endl" の大失敗について 1 つのライナーを吐き出しました。endl は、行の終わりを示し、ストリームのバッファーをフラッシュするための推奨される方法だと思いました。なぜそれが大失敗と見なされるのですか?コードで使用しないでください。

4

1 に答える 1

79

(私は推測します)彼は、多くの、特に新しいC++プログラマーが改行std::endlの代わりに盲目的に使用'\n'し、不必要に頻繁にフラッシュし、プログラムのパフォーマンスを低下させる可能性があることを意味しています。

つまり、ほとんどの人は、ストリームに改行を挿入する標準的な方法あるstd::endlと教えられています。

一部の人々の意見 (*咳*)ではstd::endl、標準にさえ含まれるべきではありませ'\n' << std::flush


TL;DR (秒) :

  • 最終的には、通常はパフォーマンスが低下し、通常はタイピングが増えることを除いてstd::endl何も得られません。
  • それには用途がありますが、ほとんどの大規模なコードベースでの使用頻度が示唆するよりもかなりまれです...
  • その有用性は非常に疑わしく、どこにでもあるというのはばかげています。まさに大失敗です!
于 2011-03-30T21:22:45.527 に答える