09 2012 档案

摘要:通过一个哈希函数建立值与存储位置的一个对应关系,在寻找该值时,可以直接通过该函数计算得出其存储位置,而不需要像其它数据结构一样通过比较来查找。理想情况下查找的时间复杂度为o(1)。哈希函数的构造方法有很多种,一个好的哈希函数应该让数据地址平均分布,并且避免冲突。此处通过除留余数法来构造哈希函数:key = value % p (p不大于哈希表长度)哈希表的长度应远大于数据存储量。当存储量接近哈希表长度时,哈希表的搜索效率将非常低。原因是冲突太多。这里使用解决冲突的办法是链地址法。就是当HASH函数计算的KEY已经存储值时,在该KEY位置上再开辟一个位置存储新值。搜索时,要检查存放在新开辟空间的 阅读全文
posted @ 2012-09-08 17:04 iyjhabc 阅读(426) 评论(0) 推荐(0)
摘要:string:find()用法用find()可以,?STL的string提供七种参数形式的find(),如果你可以确定你要查找的字符串靠后或者同时有多个子字符串符合,应该使用rfind()系列或者find_last_of()系列函数来查找,STL的string提供了100个以上的操作函数,五个find()函数原型及简单说明:(1)size_typestring::find(charc)const;(2)size_typestring::find(charc,size_typeidx)const;(3)size_typestring::find(conststring&str)const 阅读全文
posted @ 2012-09-07 17:19 iyjhabc 阅读(202) 评论(0) 推荐(0)
摘要:转自: http://www.cppblog.com/janvy/archive/2010/03/25/110499.htmlAbstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effective STL的item 41、43後,對for_each()又有了更深入... 阅读全文
posted @ 2012-09-03 21:55 iyjhabc 阅读(235) 评论(0) 推荐(0)
摘要:转自: http://www.cnblogs.com/caoshenghe/archive/2010/01/31/1660399.html第一部分使用入门vector可用于代替C中的数组,或者MFC中的CArray,从许多说明文档或者网上评论,一般一致认为应该多用vector,因为它的效率更高,而且具备很好的异常安全性。而且vector是STL推荐使用的默认容器,除非你知道你有特殊需要,使用vector不能满足你的需求,例如需要容器在head和tail高效的插入和删除,或者在任何位置高效的删除和插入操作,那么你可能使用deque或者list更加合适。vector是连续内存容器,换句话说,标准要 阅读全文
posted @ 2012-09-03 21:25 iyjhabc 阅读(215) 评论(0) 推荐(0)
摘要:Trie树就是字典树,其核心思想就是空间换时间。后缀树 suffix tree:http://www.cnblogs.com/snowberg/archive/2011/10/21/2468588.html字典树作用:1、查找单词是否出现2、查找单词第一次出现位置(在最后一个字母节点标记第一次出现位置)3、查找包含前序的单词个数(每新增一个单词进树,所经过的节点的计数器加一)4、将所有单词按字母次序输出举个简单的例子。给你100000个长度不超过10的单词。对于每一个单词,我们要判断他出没出现过,如果出现了,第一次出现第几个位置。这题当然可以用hash来,但是我要介绍的是trie树。在某些方面 阅读全文
posted @ 2012-09-02 20:17 iyjhabc 阅读(325) 评论(0) 推荐(0)
摘要:1219char str[100000]; while (gets(str)) { cout<<str<<endl; string abc=str; cout<<abc<<endl; cout<<abc.size()<<endl; }此例子证明可以用gets方便地读取一行数据(注意gets不检查buf是否足够),然后传给shring,string的大小是实际数据大小,非buf大小。1228map<string,int> num;num["one"]=1;map格式1229string str 阅读全文
posted @ 2012-09-01 14:12 iyjhabc 阅读(158) 评论(0) 推荐(0)