关于“using namespace std” 的若干问题

字面意思

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分。
所以我就养成了这种习惯
(独家防伪标记就是命名空间用自己名字哈哈哈我就是这么干的)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值