我理解using namespace std;
存在问题(例如,阅读"Why is using namespace std
considered bad practice?"的答案)。
导入标准命名空间有什么好的替代方法?
我想知道如何改进我的代码。
答案 0 :(得分:3)
将{em>所有从std
命名空间引入全局范围内using namespace std;
的全局的主要替代方法是:
只需输入您需要的实际名称。例如,只需使用vector
using std::vector;
使用名称时始终使用显式名称空间限定条件。例如std::vector<int> v;
(在标题中,这几乎总是你唯一做的事情)
带入所有名称,但缩小范围(仅限于函数内部)。例如void f() { using namespace std; vector<int> v; }
- 这不会污染全局命名空间。
答案 1 :(得分:1)
另一种方法是在任何地方写std::
。它因名称冲突而感到不满,因为它不清楚。如果您只是写vector
我不会立即知道您是否正在使用某些数学3d矢量或标准库矢量或其他内容。如果你写std::vector
就明白了。如果您using namespace std
,vector
可能会与我自己的名为vector
的3d数学课程发生冲突。