0

我正在使用 Visual Studio C++ 2010。

我有一个头文件,GNode.h,下面是一个片段:

#ifndef GNODE_H
#define GNODE_H
#include <vector>

typedef vector<int> ADJNODE_LIST;

我会Error: vector is not a template在第 2 行得到一个错误vector

但是,当我这样添加std::vector

typedef std::vector<int> ADJNODE_LIST;

没有编译错误。

似乎找不到<vector>图书馆。

谁能解释为什么?

4

2 回答 2

3

因为向量存在于std命名空间中。

您可以将其视为已定义为:

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

您包含的文件称为vector,但是要访问您需要使用其名称空间限定它的类型,因此std::vector<int>::范围运算符在哪里。

于 2013-03-12T08:50:55.213 回答
-5

它可以,但它被称为命名空间的东西包围。

在命名空间之外(例如您的程序),您无权访问命名空间内的元素

您可以使用

using namespace std;

或在 std 命名空间中添加所有内容std::

于 2013-03-12T08:54:51.183 回答