2011-10-18 58 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; 
} 
相關問題