字面意思
using:
使用。
namespace:
命名空间。
std:
英语单词“standard”(n.标准 adj.标准的,这里是名词“标准”)的缩写。
类似的,“cstdio”中的“std”也是此意。
合起来:
使用一个叫“标准”的命名空间。
说人话
就是防止重名的。因为可用的单词太少了。。。你在这个命名空间里的和另一个命名空间的函数可以同名(传入的参数都可以一样),但会执行不同效果,具体取决于你使用的命名空间。
其实这句话很多人写代码的时候都会加上。。。否则会发生一些奇奇怪怪的事情。
但是加上也容易出问题。
就是“命名空间冲突”这个事情。
如果,你使用的命名空间出现了一个变量,但是你又重新定义了一个,就会爆炸:“命名空间冲突”。
比如:在c++官方网站(www.cplusplus.com)可以查到在“algorithm”库中有一个成员叫“count”,命名空间std。
如果你又一次定义了“count”,你的程序就会炸掉,会CE。
(很经典的例子就是神奇的“next”数组和变量“y1”)
如何防止命名空间冲突
接下来就是如何防止这种奇奇怪怪的错误出现。
首先:慎用或不用“using namespace std”这个命令。(反正我不用)
那。。。不写那句话怎么解决出现“没被定义”的错误。
这里提供两种方法。
1.在std的成员前面打上"std::"这个鬼畜的东西(适用于所有命名空间,比如你自己写了个名字空间叫uuu,就是“uuu::”)
2.在程序开头声明整段代码使用一些东西,关键字就是“using”
例如:
你需要大量使用“cin”
如果你懒得在每个前面都加std
就可以在程序前面写一句话
using std::cin;
在程序中,你可以手写一个自己的命名空间
定义命名空间的办法是:
namespace LYD
{
//。。。。。。。。
};
在里面写一些函数
然后主函数里一句
using namespace LYD;
就完活。我用自己写的namespace是为了方便浏览,一类的函数写在一个空间里,查错方便。。。
这种东西赛场上出问题的概率不大,但是一出问题立刻0分。
所以我就养成了这种习惯
(独家防伪标记就是命名空间用自己名字哈哈哈我就是这么干的)