※ 引述《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