我正在使用Visual Studio C ++ 2010。
我有一个Header文件,GNode.h,下面是一个snippit:
#ifndef GNODE_H
#define GNODE_H
#include <vector>
typedef vector<int> ADJNODE_LIST;
我会在第二行Error: vector is not a template
vector
上收到错误消息
但是,当我将std::
添加到vector
时:
typedef std::vector<int> ADJNODE_LIST;
没有编译错误。
似乎无法找到<vector>
库。
有人可以解释原因吗?
答案 0 :(得分:3)
因为vector存在于std
命名空间中。
您可以将其视为已被定义为:
namespace std {
template<typename T, ...>
class vector {
...
};
}
您包含的文件名为vector
,但是要访问您需要使用它的命名空间限定它的类型,所以std::vector<int>
,其中::
是范围操作符。
答案 1 :(得分:-5)
它可以,但它被名为namespace的东西所包围。
在命名空间之外(例如您的程序),您无权访问命名空间
中的元素你可以使用
using namespace std;
或使用std::