`
luliangok
  • 浏览: 778325 次
文章分类
社区版块
存档分类
最新评论

一个hash_map使用错误

 
阅读更多

一个hash_map使用错误

g++的 hash_map 运行不起来

#include <string>
#include <ext/hash_map>
using namespace std;
using namespace __gnu_cxx;

namespace __gnu_cxx
{
template<> struct hash<const string>
{
size_t operator()(const string& s) const
{ return hash()(s.c_str()); }
};
template<> struct hash<string>
{
size_t operator()(const string& s) const
{ return hash()(s.c_str()); }
};
}

int main( void )
{
hash_map<string,int> a;
a["abc"] = 1; // 这一句一执行的话,程序直接退出

system("pause");
}

该段代码由 周星星 贴于 http://blog.vckbase.com/jzhang/archive/2006/03/28/18807.html

试运行,确实会崩溃。
经debug跟踪,很快就能找到错误来源。

原来是
template<> struct hash<string>::operator()(const string &)
定义成了无穷递归。

如下修正:

template<> struct hash<string>
{
size_t operator()(const string& s) const
{
return __stl_hash_string(s.c_str());
}
};

分享到:
评论

相关推荐

    总结Nginx 的使用过程中遇到的问题及解决方案

    在启动 Nginx 的时候,有时候会遇到这样的一个错误: 代码如下: [emerg]: could not build the proxy_headers_hash, you should increase either proxy_headers_hash_max_size: 512 or proxy_headers_hash_bucket_...

    Nginx could not build the server_names_hash 错误的解决办法

    在给nginx 配置了一个超长的域名后,通过 /usr/local/nginx/sbin/ngnix -t 检查配置文件时出现一下错误: 代码如下:could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32...

    大数据面试题(2).docx

    将其中一个文件中的url使用Bloom filter映射为这340亿bit,然后挨个读取另外一个文件的url,检查是否与Bloom filter,如果是,那么该url应该是共同的url(注意会有一定的错误率)。 2、有10个文件,每个文件1G,每...

    JAVA大数据处理题.pdf

    对 每个⼩⽂件,统计每个⽂件中出现 的词以及相应的频率(可以采⽤trie树/hash_map等),并取出出现频率最⼤的100个词(可以⽤含100个结点 的最⼩堆),并把100词及相 应的频率存⼊⽂件,这样⼜得到了5000个⽂件。...

    sourcemap-stack

    如果map文件放到跟js同目录下,一起发布到cdn上,处于安全考虑,可以使用对称性加密map文件,加密包使用,如果没有加密,这项不填 desc js error 的堆栈信息 API getStackByError 根据错误的stack error信息,提取出...

    浅析go中的map数据结构字典

    初始化:map只能使用make来初始化,声明的时候默认为一个为nil的map,此时进行取值,返回的是对应类型的零值(不存在也是返回零值)。添加元素无任何意义,还会导致运行时错误。向未初始化的map赋值引起 panic: ...

    超级有影响力霸气的Java面试题大全文档

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    springMVC poi解析ajax上传excel文件,返回json对象\list数组

    Map 一个线性Hash Map,以Excel的sheet表顺序,并以sheet表明作为key,sheet表转换Json后的字符串作为value 最后返回一个LinkedHashMap, String&gt; 3. ExcelToJsonPoi.java工具类 这个与上面工具类类似,不过这个是...

    java面试宝典

    144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS? 36 145、与之间的差别? 36 146、JSP的缺点? 36 148、如何实现JSP的国际化? 36 150、如何在JSP中包括绝对路径文件? 使用URLConnection...

    sesvc.exe 阿萨德

    根据当前 key 的 hashcode 定位到具体的桶中并判断是否为空,为空表明没有 Hash 冲突就直接在当前位置创建一个新桶即可。 如果当前桶有值( Hash 冲突),那么就要比较当前桶中的 key、key 的 hashcode 与写入的 key...

    网络安全员题库答案解析.xls

    5 负载均衡源地址哈希算法的思想是根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。 正确 错误 6 最小...

    net学习笔记及其他代码应用

    6.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理? 答 : this.Server.Transfer 7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? ...

    java 面试题 总结

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    X-Cart Gold 4.5.4.zip

    ] 2012年10月16日,随机 - 错误(0126771):地址簿:当一个新的地址输入错误,重装后没有任何错误信息显示。固定的。 [!2012年10月05日,AIM - 问题(0126757):卖家地址为必填字段验证所使用的过时的JavaScript...

    freemarker总结

    l 可以使用assign指令在导入的名字空间中创建或替代变量,下面是一个例子: &lt;#import "/lib/my_test.ftl" as my&gt; ${my.mail} ${my.mail} l 输出结果: jsmith@acme.com jsmith@other.com l 数据...

    Excel导入导出工具包

    万能的Excel导入导出工具. ...不写一个配置文件. 用到了适配器模式,支持任意类型的数据导入导出,用户还可以自己编写适配器操作自定义的数据类型! 示例参照:https://github.com/hyberbin/J-Excel

    LeetCode判断字符串是否循环-leetcode:leetcode练习,算法部分!

    1.map内部根据键值红黑树排序,一开始以为根据插入时间排序导致错误 2.情况分为最长子串在字符串开头,中间,以及结尾,需要用不同的方式进行处理 3.tag中hash table没有用到,可能是提高效率的关键点?(不过感觉...

    leetcode答案-leetcode:leetcode

    1.map内部根据键值红黑树排序,一开始以为根据插入时间排序导致错误 2.情况分为最长子串在字符串开头,中间,以及结尾,需要用不同的方式进行处理 3.tag中hash table没有用到,可能是提高效率的关键点?(不过感觉...

    有关hashMap跟hashTable的区别,说法正确的是?

    题目 (多选)有关hashMap跟hashTable的区别,说法正确的是? A. HashMap和Hashtable都实现了Map接口 B....Map是一个接口,hashtable,hashmap都是它的实现。 B正确。由于Hashtable是线程安全的也是sy

    JAVA面试题最全集

    写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。 3.数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字...

Global site tag (gtag.js) - Google Analytics