Programming 版 (精华区)

发信人: zhangyan (Embrace the sunshine), 信区: Programming
标  题: Re: Help about sgi-stl
发信站: 哈工大紫丁香 (2002年05月28日07:03:12 星期二), 站内信件

hehe 使用string的时候,的确有问题 

SGI的STL中,hash_map只对int,char*等原生类型作了一些特化
而对string等类型,hash<T>并不起作用
hash<T>定义为
template <class T> class hash<T>{};
如果要使用hash<string>的话 
需要对hash<string>做特化,或者自己写一个hash函数,并将函数指针传入
下面给出一种模板部分特化的方法:
 
#include <hash_map>
#include <string>

using namespace std;
namespace std{ 
//partial specialization
template <> struct hash<string> {
size_t operator()(const string& _str) const {
       return __stl_hash_string(_str.c_str()); //call default hash function
       }
};
}



int main(){
string strFirstWord = "Hello";
hash_map<string, int>  m_Hash_Word;
        m_Hash_Word[strFirstWord]=1;
}

【 在 domino (爱咋咋地) 的大作中提到: 】
: 谁用过hash_map
: 介绍一下!


--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.7.34.3]
※ 修改:·zhangyan 於 06月08日10:12:19 修改本文·[FROM: 天外飞仙]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:10.623毫秒