2010-12-01 25 views
0

私はVS 2008 C++で単純なハッシュテーブルを作成しています。私はエラーを取得していますC++でハッシュテーブルを作成するにはどうすればよいですか?

#include <map> 
std::map <string, char> grade_list; 
grade_list["John"] = 'B'; 

: エラーC2057:それは何を期待定数式

を意味するのでしょうか?ライブラリを向上させるには何か良い点がありますか?

ありがとうございます!

+3

小さなプログラムの場合、主な機能が不足しているためにコンパイルされていないものも投稿しました。 Vatsan

+0

@Vatsanのようなヘッダーが欠落しています。私はmain関数にそのコードを入れなかった。 –

答えて

6
#include <map> 
#include <iostream> 
#include <string> 

int main() { 
    std::map<std::string, char> grade_list; 
    grade_list["John"] = 'B'; 
    std::cout << grade_list["John"] << std::endl; 
    return 0; 
} 

これはg ++で効果的です。 私のコードで行ったように、マップ宣言にstd :: before文字列を指定する必要があります。

10

まずはstd::mapはハッシュマップではなく、ツリーマップです。

エラーが発生した理由は、#include <string>を参照していないか、またはstringへの参照を修飾していないため、コンパイラはstringがクラスであることを知らないためです。

+2

はC++ 0xで提供されています。 – Vatsan

+0

OK、どのようにしてハッシュテーブルを作成しますか? –

+1

@BSeven:既にC++ 0xのunordered_map(最近のgccとVisual Studio do)を実装し、それを使用するか、[boostの実装]を使用するコンパイラを使用することによって(http://www.boost.org/doc/libs /1_36_0/doc/html/unordered.html)。 – sepp2k

1

コードは主機能の前です。

関連する問題