作者LPH66 (-858993460)
看板Programming
标题Re: [问题] 两题C++的问题.样板与结构
时间Tue Apr 5 23:30:14 2011
※ 引述《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