c++ 使用 stl 向量

c++ using stl vector

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

#include <vector>

首先。那为什么我们在使用的时候还要加上vector的名字space,比如:

std::vector<int> a;

为什么不

vector<int> a;

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

每个 #include 指令包括来自 C++ 标准库的内容 "loads" 实体到 std 命名空间(或其他一些命名空间,如 this)。

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

<vector>文件中,然后有类似

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

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

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