什么是"使用命名空间 std;"的好替代方案?
What are good alternatives to "using namespace std;"?
我知道using namespace std;
是有问题的(例如,通过阅读"为什么using namespace std
被认为是不好的做法?"的答案(。
像这样导入标准命名空间的好选择是什么?
我想知道我能做些什么来改进我的代码。
将std
命名空间中的所有内容引入全局命名空间并在全局范围内using namespace std;
的主要替代方法是:
-
只带上您需要的实际姓名。例如,只需将
vector
与using std::vector;
使用 名称时,请始终使用显式命名空间限定。例如
std::vector<int> v;
(在标题中,这几乎总是您唯一要做的事情(引入所有名称,但范围缩小(例如仅在函数内(。例如
void f() { using namespace std; vector<int> v; }
- 这不会污染全局命名空间。
另一种方法是到处写std::
。由于名称冲突和不清楚,它不受欢迎。如果你只是写vector
我不会立即知道你使用的是数学 3d 向量还是标准库向量或其他东西。如果你写std::vector
就很清楚了。如果你using namespace std
,vector
可能会和我自己的3d数学课vector
发生冲突。
相关文章:
- C++11 中不同类型的对象的 std::array 的替代方案
- 为什么 std::memcpy(作为类型双关语的替代方案)不会导致未定义的行为?
- 使用 stl 排列 std::vector 元素的最短解决方案
- 什么是"使用命名空间 std;"的好替代方案?
- sTD ::功能的替代方案,用于收集可可的功能
- 为什么C++std::set没有"at"功能,什么是内联替代方案
- std::bind in Modern C++ 的替代方案
- 一旦找到所需的替代方案,就突破 std::visit
- 当大小固定而不是constexpr时,C 的sTD ::数组的替代方案
- GCC <5 是否有 std::p ut_time 的内置替代方案?
- std::initializer_list备选方案
- std::map的线程安全替代方案
- std::optional 的最佳替代方案是从方法返回可选值?(使用 C++98/C++11/C++14)
- 与 2010 年相比,解决方案更新到 2012 年.std::function = 空错误
- 来自 std::find 的此错误的优雅解决方案是什么
- std::vector 的替代方案,因为重新分配会使指向元素的指针无效
- 使用 std::tr1::bind 或 std::tr1::mem_fn 时,可以使用 std::not1 的替代方案
- std::istream::ignore的替代方案
- std::enable_if和模板模板参数显式重载的替代方案
- 如何将std::string放入boost::lockfree::queue(或备选方案)