[問題] using namespace std V.S std::

看板C_and_CPP作者時間15年前 (2010/09/08 00:51), 編輯推噓3(3022)
留言25則, 9人參與, 最新討論串1/2 (看更多)
請問用 (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

09/08 00:52, , 1F
ZeroJudge 這個系統的執行時間算得超不準,請勿相信
09/08 00:52, 1F

09/08 00:52, , 2F
我認為三種方法的執行時間應該是相等的
09/08 00:52, 2F

09/08 00:53, , 3F
另外我猜(我也不知道答案)會用後者的方式是因為
09/08 00:53, 3F

09/08 00:53, , 4F
若有其它namespace一起混進來的話,這樣比較明瞭
09/08 00:53, 4F

09/08 00:53, , 5F
看這個列表就知道使用了哪個namespace的哪個東西
09/08 00:53, 5F

09/08 00:54, , 6F
但我同樣的程式連測2~3次,用(1)的就是6ms,(3)就是2ms
09/08 00:54, 6F

09/08 01:01, , 7F

09/08 01:02, , 8F
這是我使用 `time` 指令測試出來的結果
09/08 01:02, 8F

09/08 01:02, , 9F
數 ms 的執行時間其精準度不是很好
09/08 01:02, 9F

09/08 01:02, , 10F
你可能需要重覆數萬至數十萬次來比較
09/08 01:02, 10F

09/08 01:02, , 11F
尤其是 ZeroJudge 算時間真的很不準!
09/08 01:02, 11F

09/08 01:05, , 12F
怎麼可能有差= =
09/08 01:05, 12F

09/08 01:11, , 13F
用(3)的話等於沒解決namespace pollution問題嘛...
09/08 01:11, 13F

09/08 01:35, , 14F
(1)蠻多人定義fstream物件的時候取名叫做fout, 那麼定
09/08 01:35, 14F

09/08 01:36, , 15F
義 char cout; 應該也不是不可能, 如果遇到 cout << 1
09/08 01:36, 15F

09/08 01:38, , 16F
就遇到模棱兩可, 雖然你的變數命名可以控制, 但不能保
09/08 01:38, 16F

09/08 01:40, , 17F
證其他人不會這麼白爛讓你連結的時候才發現錯誤一堆
09/08 01:40, 17F

09/08 01:52, , 18F
(2)雖然也是很方便, 還是會有上述問題 (3)這個最好只
09/08 01:52, 18F

09/08 01:53, , 19F
你跑個上萬次,在自己的電腦上計時
09/08 01:53, 19F

09/08 01:53, , 20F
在函式內部做, 一旦你在標頭檔using namespace; 那麼
09/08 01:53, 20F

09/08 01:55, , 21F
便可能會造成其他引入此檔的人上述困擾.
09/08 01:55, 21F

09/08 01:55, , 22F
寫 header 時一般只用 1,寫實作檔時可以用 2 或 3。
09/08 01:55, 22F

09/08 01:56, , 23F
夠勤勞的話,在實作檔裡以 function 為單位使用 3。
09/08 01:56, 23F

09/08 03:14, , 24F
計時的用code::block內建的計時準嗎??
09/08 03:14, 24F

09/08 10:36, , 25F
感謝各位!會有這問題主因是簡單輸出我卻一直做不出0ms
09/08 10:36, 25F
文章代碼(AID): #1CXcs8nT (C_and_CPP)
文章代碼(AID): #1CXcs8nT (C_and_CPP)