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)。
命名空间有助于防止全局命名空间污染 - 通过将所有内容保存在单独的命名空间中,标识符冲突变得不可能。
在<vector>
文件中,有类似
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编译错误? [关闭]