什么是“使用命名空间std;”的好方法?

时间:2017-05-17 16:14:57

标签: c++ namespaces std

我理解using namespace std;存在问题(例如,阅读"Why is using namespace std considered bad practice?"的答案)。

导入标准命名空间有什么好的替代方法?

我想知道如何改进我的代码。

2 个答案:

答案 0 :(得分:3)

将{em>所有从std命名空间引入全局范围内using namespace std;的全局的主要替代方法是:

  1. 只需输入您需要的实际名称。例如,只需使用vector

  2. 引入using std::vector;
  3. 使用名称时始终使用显式名称空间限定条件。例如std::vector<int> v;(在标题中,这几乎总是你唯一做的事情)

  4. 带入所有名称,但缩小范围(仅限于函数内部)。例如void f() { using namespace std; vector<int> v; } - 这不会污染全局命名空间。

答案 1 :(得分:1)

另一种方法是在任何地方写std::。它因名称冲突而感到不满,因为它不清楚。如果您只是写vector我不会立即知道您是否正在使用某些数学3d矢量或标准库矢量或其他内容。如果你写std::vector就明白了。如果您using namespace stdvector可能会与我自己的名为vector的3d数学课程发生冲突。