如何将模板化值用作地图中的键?

时间:2011-10-18 03:46:34

标签: c++ templates maps

我尝试使用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而不是直接映射。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

  

所以我不能将模板化的值作为地图的键吗?

不,没有这样的规则。如果有任何这样的规则,它将意味着通用编程的力量,模板存在的目的将是无用的。

  

还是有其他办法吗?

您只是遇到语法错误,因为您没有使用其(std)命名空间限定map。

对我来说很好 here

#include<map>

template <class V> class Graph 
{
     std::map<V, std::map<V,int> > vertices;

};

int main()
{
    return 0;
}
相关问题