[爆卦]Using namespace std是什麼?優點缺點精華區懶人包

為什麼這篇Using namespace std鄉民發文收入到精華區:因為在Using namespace std這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Cidolfas ()看板C_and_CPP標題[問題] using namespace std...


請問用

(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

你可能也想看看

搜尋相關網站