#include <ext/hash_map> using namespace __gnu_cxx; struct compare_str { bool operator()(const char* p1, const char*p2) const { return strcmp(p1, p2) == 0; } }; int main(int argc, char* argv[]) { hash_map<const char*, int, hash<const char*>, compare_str> StrIntMap; StrIntMap["a"] = 111; StrIntMap["b"] = 222; return 0; }
VC:
-
#include <hash_map>
-
using namespace std;
- using namespace stdext;
-
-
struct CharLess : public binary_function<const char*, const char*, bool>
-
{
-
public:
-
result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const
-
{
-
return(stricmp(_Left, _Right) < 0 ? true : false);
-
}
- };
-
-
hash_map<const char*, int, hash_compare<const char*, CharLess> > CharHash;
-
CharHash["a"] = 123;
-
CharHash["b"] = 456;
-
char szInput[64] = "";
-
scanf("%s", szInput);
- int val = CharHash[szInput];
若是int类型,可以不设置比较器,但对于指针类型则不行,例如char*。例如,下面的代码就会去比较"a"和"b"这两个常量的指针大小,这个时候就需要上面的比较器了。
参考:http://blog.csdn.net/srzhz/article/details/7881946
- hash_map<const char*, int> CharHash;
- CharHash["a"] = 123;
- CharHash["b"] = 456;
- char szInput[64] = "";
- scanf("%s", szInput);
- int val = CharHash[szInput];
相关热门文章
给主人留下些什么吧!~~
评论热议