看板 C_and_CPP 關於我們 聯絡資訊
請問用 (1) std::cout << "輸出資料"; (2) using std::cout; (3) using namespace std; 這三種用法上速度有差別吧? 我在高中解題系統中測試解單的輸出個資, 發現(1)輸出要花 6 ms, (2)輸出要花 4 ms, (3)輸出要花 2 ms。 想請問是為什麼? 另外,在我看過的國外翻譯c++書籍, (C++ primer、How to program C++) 他們寫法多是 (1) 與 (2), 但是要一個個令輸出函式不是比較麻煩嗎? ex. using std::cout; using std::cin; using std::endl; 為何不只寫(3),直接呼叫C++的標準函式庫比較省事呢? 多謝指教。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.137.125
Dannvix:ZeroJudge 這個系統的執行時間算得超不準,請勿相信 09/08 00:52
Dannvix:我認為三種方法的執行時間應該是相等的 09/08 00:52
Dannvix:另外我猜(我也不知道答案)會用後者的方式是因為 09/08 00:53
Dannvix:若有其它namespace一起混進來的話,這樣比較明瞭 09/08 00:53
Dannvix:看這個列表就知道使用了哪個namespace的哪個東西 09/08 00:53
Cidolfas:但我同樣的程式連測2~3次,用(1)的就是6ms,(3)就是2ms 09/08 00:54
Dannvix:http://paste.plurk.com/show/302852/ 09/08 01:01
Dannvix:這是我使用 `time` 指令測試出來的結果 09/08 01:02
LPH66:數 ms 的執行時間其精準度不是很好 09/08 01:02
LPH66:你可能需要重覆數萬至數十萬次來比較 09/08 01:02
Dannvix:尤其是 ZeroJudge 算時間真的很不準! 09/08 01:02
holymars:怎麼可能有差= = 09/08 01:05
hilorrk:用(3)的話等於沒解決namespace pollution問題嘛... 09/08 01:11
loveme00835:(1)蠻多人定義fstream物件的時候取名叫做fout, 那麼定 09/08 01:35
loveme00835:義 char cout; 應該也不是不可能, 如果遇到 cout << 1 09/08 01:36
loveme00835:就遇到模棱兩可, 雖然你的變數命名可以控制, 但不能保 09/08 01:38
loveme00835:證其他人不會這麼白爛讓你連結的時候才發現錯誤一堆 09/08 01:40
loveme00835:(2)雖然也是很方便, 還是會有上述問題 (3)這個最好只 09/08 01:52
ducksteven:你跑個上萬次,在自己的電腦上計時 09/08 01:53
loveme00835:在函式內部做, 一旦你在標頭檔using namespace; 那麼 09/08 01:53
loveme00835:便可能會造成其他引入此檔的人上述困擾. 09/08 01:55
tinlans:寫 header 時一般只用 1,寫實作檔時可以用 2 或 3。 09/08 01:55
tinlans:夠勤勞的話,在實作檔裡以 function 為單位使用 3。 09/08 01:56
diabloevagto:計時的用code::block內建的計時準嗎?? 09/08 03:14
Cidolfas:感謝各位!會有這問題主因是簡單輸出我卻一直做不出0ms 09/08 10:36