什么是"使用命名空间 std;"的好替代方案?

What are good alternatives to "using namespace std;"?

本文关键字:方案 std 命名空间 什么      更新时间:2023-10-16

我知道using namespace std;是有问题的(例如,通过阅读"为什么using namespace std被认为是不好的做法?"的答案(。

像这样导入标准命名空间的好选择是什么?

想知道我能做些什么来改进我的代码。

std命名空间中的所有内容引入全局命名空间并在全局范围内using namespace std;的主要替代方法是:

  1. 只带上您需要的实际姓名。例如,只需将vectorusing std::vector;

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

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

另一种方法是到处写std::。由于名称冲突和不清楚,它不受欢迎。如果你只是写vector我不会立即知道你使用的是数学 3d 向量还是标准库向量或其他东西。如果你写std::vector就很清楚了。如果你using namespace stdvector可能会和我自己的3d数学课vector发生冲突。