c ++使用stl向量[关闭]

Posted

技术标签:

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

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

#include <vector>

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

std::vector<int> a;

为什么不直接

vector<int> a;

【问题讨论】:

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

以上是关于c ++使用stl向量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

c ++:在c ++ STL中使用map编译错误? [关闭]

在c ++中使用向量对数字进行排序[关闭]

实现一个符合 C++17 的 STL 容器? [关闭]

c ++ stl更正参数到priority_queue [关闭]

在for循环C ++之外访问向量[关闭]

如何将字节数据从套接字写入 C 中的无符号字符向量? [关闭]