2011-10-18 23 views
0

stl::mapを使用して3次元行列を実装しようとしています。テンプレートの値をマップのキーとして使用するにはどうすればよいですか?

"キー"がテンプレート化され、 "値"が(他の次元の)他のマップであるマップがあります。ここで私は

graph.h|37| error: ISO C++ forbids declaration of ‘map’ with no type· 

をGET-コンパイルエラーがだから、私は、マップのキーとしてテンプレート値を持つことができないか、それを行うための別の方法があることは事実です。ここでImは

using namespace std; 
template <class V>· 
class Graph { 
    ... 
    map<V, map<V,int> > vertices;· 
    ... 
}; 

SO-実行しようとすると、私のコード------ UPDATEの一部である:

私のコメント、私はそれが隠されている固定と言って、間違いは私がすべき、愚かですstd::mapを使用していて、直接マップしていません。助けてくれてありがとう。

+3

は、名前空間std'を使用して 'あなたは'#は 'をinclude'd'、あなたがしていることがありますか? – quasiverse

+0

はい、私の投稿を更新して表示します。 thx – sri

+2

'std :: map;を使って'ヘッダファイルにある 'std'ネームスペース全体を引っ張るよりも良いでしょう。 – Johnsyweb

答えて

3

マップのキーとしてテンプレート値を使用できないのは本当ですか?

いいえ、このようなルールはありません。そのような規則があれば、それはジェネリックプログラミングの力を意味するでしょう、テンプレートの存在の目的は役に立たないでしょう。

または別の方法がありますか?

(std)名前空間でマップを修飾しなかったため、構文エラーが発生しました。

作品罰金私のためhere

#include<map> 

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

}; 

int main() 
{ 
    return 0; 
} 
関連する問題