【问题标题】:c++ using stl vector [closed]c ++使用stl向量[关闭]
【发布时间】:2016-04-01 02:45:27
【问题描述】:

我对矢量的使用有点困惑。我们通常输入

#include <vector>

首先。那为什么我们在使用的时候还需要附加vector的命名空间,比如:

std::vector<int> a;

为什么不直接

vector<int> a;

【问题讨论】:

  • 如果你需要同时使用这个vector和一些数学库的vector类怎么办?
  • 首先,我认为您应该确定 include 语句和命名空间之间的区别。
  • 请参考这个帖子(让你开始):stackoverflow.com/questions/388242/…
  • 您可能想了解有关头文件和命名空间的更多信息。
  • 感谢您的回答。现在更清楚了。所以似乎“包含语句”没有指定调用库的路径。需要更多地回顾一下为什么 c++ 将这两个进程分开。

标签: c++ stl namespaces std


【解决方案1】:

每个 #include 指令,包括 C++ 标准库中的某些内容,都将实体“加载”到 std 命名空间(或其他命名空间,如 this)。

命名空间有助于防止全局命名空间污染 - 通过将所有内容保存在单独的命名空间中,标识符冲突变得不可能。

&lt;vector&gt; 文件中,有类似

namespace std {
    template<typename T> class vector {
        ...
    };
}

如您所见,vector 模板仍在 std 命名空间中。

总而言之,您使用#include 预处理器指令来使用头文件中提供的某些功能。该文件的内容以文本形式替换 #include 指令。
不过,这些设施位于不同的命名空间中以防止名称冲突。

【讨论】:

    【解决方案2】:

    创建命名空间是为了避免命名冲突。您的代码中可能还有 vector 之类的东西。但是您可以使用 using namespace std; - 它允许您像这样使用它(以及 std 命名空间中的任何其他内容):vector a; (当然,如果没有名称冲突)

    【讨论】:

    • 不要using namespace std,只要using std::vector就够了
    • 对于严肃的程序using namespace std; 被认为是不好的做法。这是一个解释:stackoverflow.com/questions/1452721/…
    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多