我尝试使用stl::map
实现3维矩阵。
我有一个地图,其“键”是模板化的,“值”是其他地图(对于另一个维度)。这是我得到的编译器错误 -
graph.h|37| error: ISO C++ forbids declaration of ‘map’ with no type·
因此,我不能将模板化值作为地图的键,或者是否有其他方法可以实现。这是我的代码的一部分,我试图这样做 -
using namespace std;
template <class V>·
class Graph {
...
map<V, map<V,int> > vertices;·
...
};
------更新:
我的评论说我修复它是隐藏的,错误是愚蠢的,我本应该使用std::map
而不是直接映射。谢谢你的帮助。
答案 0 :(得分:3)
所以我不能将模板化的值作为地图的键吗?
不,没有这样的规则。如果有任何这样的规则,它将意味着通用编程的力量,模板存在的目的将是无用的。
还是有其他办法吗?
您只是遇到语法错误,因为您没有使用其(std)命名空间限定map。
对我来说很好 here
#include<map>
template <class V> class Graph
{
std::map<V, std::map<V,int> > vertices;
};
int main()
{
return 0;
}