作者Cidolfas ()
看板C_and_CPP
標題[問題] using namespace std V.S std::
時間Wed Sep 8 00:51:17 2010
請問用
(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:這是我使用 `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