我正在为使用STL的map类实现的简单图表类编写头文件。但是,我遇到模板参数的问题,它似乎告诉我,我不能声明矢量和地图对象“没有类型”,但我看不出我怎么没有给它所需的类型。此外,向量和映射类包含在指令中。 private:
已被评论用于测试。我觉得这是某种语法错误。
Graph.h
#include <iostream>
#include <cstdlib>
#include <vector>
#include <map>
template <typename T>
class Graph
{
public:
Graph();
Graph(const Graph<T>& other);
Graph& operator=(const Graph<T>& other);
~Graph();
vector<T> AdjacentNodes(const T& n);
//private:
map<T, vector<T>> m;
};
答案 0 :(得分:1)
要使用地图和矢量类,您需要添加以下头文件
#include <map>
#include <vector>
并且map和vector也是std命名空间的一部分。因此你需要使用std :: map,std :: vector。
答案 1 :(得分:0)
(从http://www.cplusplus.com/reference/map/map/获取的块,我建议您查看!)
template < class Key, // map::key_type
class T, // map::mapped_type
class Compare = less<Key>, // map::key_compare
class Alloc = allocator<pair<const Key,T> > // map::allocator_type
>
首先,确保你输入“using namespace std;”在顶部或前置std项目,例如地图矢量std::
其次,如上面的模板所示,如果typename T
不是定义std::less
的数据类型,则需要创建自己的比较函数(可以是函数指针或函数对象) )并将其作为第三个模板参数输入。
最后,如果您使用较旧的编译器,请务必将>>
放入map<T, vector<T>> m;
,您需要在最后两个>
之间加一个空格