看板 Programming 關於我們 聯絡資訊
※ 引述《yauhh (喲)》之銘言: : ※ 引述《supercygnus (......)》之銘言: : : 第一題的程式碼 : : #include <iostream> : : #include <cstdlib> : : using namespace std; : : template <class T> : : void swap1(T& x, T& y) : : { : cut(); : : 函數名稱竟然不能用swap會有錯誤,是編譯器有內定了? 害我卡了好久 : : 改成swap1竟然就可以了 : Ubuntu 10.10 用的 GNU C++ 會參考到 /usr/include/c++/4.4/bits/move.h : 第 76 行左右將 swap 函數定義在 std namespace 裡. : 像這樣用了 std 又自己定義另一個 swap 就不能編譯. http://www.sgi.com/tech/stl/swap.html 這個 std::swap 是在 <algorithm> 裡 屬於 STL (Standard Template Library) --- 說起來這正是為什麼要有 namespace 的原因... 所以 using namespace std; 雖然比較方便但其實並不是很好 當你的函數名不管是在 STL 或 CRT 或等等...地方有定義了就很麻煩 偷懶的話還可以這樣用沒關係 要嚴謹一點的話還是一個一個 using 吧 畢竟 namespace std 裡可是很多東西的... 例如只要 cin cout 就 using std::cin; using std::cout; --- java 的 package 管理正好和 C++ 的 namespace 很像 在 java 裡類似於 using 的指令叫 import 寫 import java.util.*; 就會讓所有 package java.util 下面的東西名字全部露出來 曾經在寫 swing 程式時同時 import java.util.*; 和 javax.swing.*; 結果兩個 package 下面都有一個 Timer 用到時 javac 就向我抱怨了 orz -- 'Oh, Harry, don't you see?' Hermione breathed. 'If she could have done one thing to make absolutely sure that every single person in this school will read your interview, it was banning it!' ---'Harry Potter and the order of the phoenix', P513 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.230.62