2011-10-18 27 views
0

我试图用stl::map来实现3维矩阵。如何将模板值用作地图中的键?

我有一个地图的“键”是模板化的,“值”是其他地图(对于其他维度)。以下是编译器错误我GET-

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而不是直接映射。感谢您的帮助。

+3

你有'#'include'd'和你'使用命名空间std'? – quasiverse

+0

是的,Il更新我的帖子来证明这一点。 thx – sri

+2

'使用std :: map;'会比拉取整个'std'命名空间更好,因为它位于头文件中。 – Johnsyweb

回答

3

因此,我无法将模板值作为地图的关键点吗?

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

还是有另一种方法呢?

你只是有一个语法错误,因为你没有使用它的(标准)名称空间限定映射。

工作正常,我here

#include<map> 

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

}; 

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