前言
可能是目前最简短的一篇?因为实在不知道可以和那一篇一起讲了。
(总目录:https://www.cnblogs.com/jinkun113/p/12528423.html)
1.3.4 命名空间 namespace
C++ 另一大特性——命名空间(namespace),用来解决复杂项目中名字可能出现冲突的问题——比如某项目由 jk 和 bebe 共同完成,而他俩在定义变量名时总是重复,比如都使用了 vis 作为标记数组,那么就可以使用 namespace 来对各自的工作空间进行切割:
1 #include <bits/stdc++.h> 2 3 namespace jk { 4 int vis[20]; 5 } 6 7 namespace bebe { 8 int vis[20]; 9 } 10 11 int main() { 12 jk :: vis[1] = 1; 13 bebe :: vis[1] = 0; 14 return 0; 15 }
当然并非每次都需要强调这是谁的 vis。使用 “using namespace ” + 空间名,相当于是划分地盘:
1 #include <bits/stdc++.h> 2 3 namespace jk { 4 int vis[20]; 5 } 6 7 namespace bebe { 8 int vis[20]; 9 } 10 11 int main() { 12 using namespace jk; 13 vis[1] = 1; 14 bebe :: vis[1] = 0; 15 return 0; 16 }
这里表示,主程序这一块都是 jk 的,jk 住在这里了,那么他自己的东西就不用再强调是谁的了,vis[1] 等价于 “jk :: vis[1]”,而外人 bebe 仍需标明。
所以,平时竞赛最常用的 using namespace std 是指什么?是 C++ 默认提供的一套标准命名空间,里面包含 cin, cout, endl, ... 等等。
当然,除了上述这样允许访问某命名空间的任何成员,也可以选择仅访问其中一个成员,比如 using std :: cin,等等。
C++ 另一大特性——命名空间(namespace),用来解决复杂项目中名字可能出现冲突的问题——比如某项目由 jk 和 bebe 共同完成,而他俩在定义变量名时总是重复,比如都使用了 vis 作为标记数组,那么就可以使用 namespace 来对各自的工作空间进行切割:
1 #include <bits/stdc++.h> 2 3 namespace jk { 4 int vis[20]; 5 } 6 7 namespace bebe { 8 int vis[20]; 9 } 10 11 int main() { 12 jk :: vis[1] = 1; 13 bebe :: vis[1] = 0; 14 return 0; 15 }
当然并非每次都需要强调这是谁的 vis。使用 “using namespace ” + 空间名,相当于是划分地盘:
1 #include <bits/stdc++.h> 2 3 namespace jk { 4 int vis[20]; 5 } 6 7 namespace bebe { 8 int vis[20]; 9 } 10 11 int main() { 12 using namespace jk; 13 vis[1] = 1; 14 bebe :: vis[1] = 0; 15 return 0; 16 }
这里表示,主程序这一块都是 jk 的,jk 住在这里了,那么他自己的东西就不用再强调是谁的了,vis[1] 等价于 “jk :: vis[1]”,而外人 bebe 仍需标明。
所以,平时竞赛最常用的 using namespace std 是指什么?是 C++ 默认提供的一套标准命名空间,里面包含 cin, cout, endl, ... 等等。
当然,除了上述这样允许访问某命名空间的任何成员,也可以选择仅访问其中一个成员,比如 using std :: cin,等等。