今天討論的內容是C++的std::endl跟'\n'。
相信很多人都學過這兩個都是換行的功能,但究竟哪一個比較好,差別在哪裡呢?
事實上,’\n’才是真正的換行,endl雖然叫做endline,但換行反而算是附加的功能,他更大的功能在於會順便執行flush。
所以std::cout<<std::endl;
其實是 std::cout<<'\n'<<std::flush;
,flush會對輸出流做一些酷酷的事情,那就是刷新緩存區,不過基本上不是很重要啦,只要知道會多花時間做一件幾乎不影響程式運行的事情就好。
所以其實是std::endl的執行所花的時間是比'\n'還要多的,在爭分奪秒的競技程式世界,這個是一個不小的浪費,所以一般來說 競賽的話,比較推薦使用'\n'。
不過有些人(我本人)就很奇怪,小時候C++寫很爽,長大沒有endl就不習慣,所以會使用一個很奇怪的魔法,那就是:#define endl '\n'
,直接解決endl效率問題(X)。