﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-skyli-随笔分类-C++之路</title><link>http://www.cppblog.com/shyli/category/1504.html</link><description>C++之梦</description><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 12:29:05 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 12:29:05 GMT</pubDate><ttl>60</ttl><item><title>一道算法题引发的动态内存管理的思考</title><link>http://www.cppblog.com/shyli/archive/2007/08/13/29853.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sun, 12 Aug 2007 16:29:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/08/13/29853.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/29853.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/08/13/29853.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/29853.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/29853.html</trackback:ping><description><![CDATA[<p>在做<a href="http://acm.pku.edu.cn/JudgeOnline/problem?id=2762">PKU2762</a>时，需要建邻接表。<br>于是按部就班写了下面一个插入边到邻接表中的函数：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;VMAX&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1010</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">typedef&nbsp;struct&nbsp;Graph<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;vex;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Graph</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">next</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">}Graph;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">Graph&nbsp;ArcGraph[VMAX];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">void&nbsp;insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;u,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;v)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Graph</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Graph;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Graph</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ArcGraph[u].next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">vex&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;v;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #0000ff">next</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;ArcGraph[u].next&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;t;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">}</span></div>
<p><br>完成完整的程序提交上去，得到结果<br>Memory:25796K&nbsp; Time:375MS<br>Language:C++&nbsp; Result:Accepted<br><br>再对比别人的程序<br>Memory:296K Time:109MS<br><br>无论是时间还是空间都相差很大。<br>于是就考虑怎么优化自己的程序。<br>第一个问题：规模只有1000，为什么会用那么多内存呢？<br>仔细一想数据是多case的，每次插入新节点时都要动态创建一个节点。<br>一来动态创建耗时间，二来每个case结束的邻接表中的节点没有释放，故耗费大量内存。<br>然后就想到了下面的算法，首先初始化一块内存Graph use[100*VMAX];这样每次需要新节点时，<br>就从use中获取。如果use使用完毕就再动态创建。<br><br>依此算法优化后，得到的结果比较满意<br>Memory:1000K&nbsp; Time:218MS<br>Language:C++&nbsp; Result:Accepted</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;VMAX&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1010</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">typedef&nbsp;struct&nbsp;Graph<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;vex;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Graph</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">next</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">}Graph;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">Graph&nbsp;ArcGraph[VMAX];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">Graph&nbsp;use[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">VMAX];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">void&nbsp;insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;u,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;v)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Graph</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;t;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(size&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">VMAX)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">use[size];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;t&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Graph;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Graph</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ArcGraph[u].next;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">vex&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;v;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #0000ff">next</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;ArcGraph[u].next&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;t;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">}</span></div>
<img src ="http://www.cppblog.com/shyli/aggbug/29853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-08-13 00:29 <a href="http://www.cppblog.com/shyli/archive/2007/08/13/29853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再谈子集树</title><link>http://www.cppblog.com/shyli/archive/2007/07/23/28637.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Mon, 23 Jul 2007 07:56:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/07/23/28637.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/28637.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/07/23/28637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/28637.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/28637.html</trackback:ping><description><![CDATA[发现用stl中的bitset求子集树只要短短的几行代码<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">bitset</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_42_235_Open_Image onclick="this.style.display='none'; Codehighlighter1_42_235_Open_Text.style.display='none'; Codehighlighter1_42_235_Closed_Image.style.display='inline'; Codehighlighter1_42_235_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top twffan="done"><img id=Codehighlighter1_42_235_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_235_Closed_Text.style.display='none'; Codehighlighter1_42_235_Open_Image.style.display='inline'; Codehighlighter1_42_235_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top twffan="done">using&nbsp;</span><span id=Codehighlighter1_42_235_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Namespace&nbsp;std</span><span id=Codehighlighter1_42_235_Open_Text><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;n);&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitset</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;bit(i);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;bit.size()&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;j</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">bit[j];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span></div>
</span>n个元素有2^n个子集，<br>i从0到2^n - 1,<br>把它换算成二进制就分别对应一个子集。
<img src ="http://www.cppblog.com/shyli/aggbug/28637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-07-23 15:56 <a href="http://www.cppblog.com/shyli/archive/2007/07/23/28637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>位运算求子集树</title><link>http://www.cppblog.com/shyli/archive/2007/07/22/28547.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sat, 21 Jul 2007 18:59:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/07/22/28547.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/28547.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/07/22/28547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/28547.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/28547.html</trackback:ping><description><![CDATA[以前求子集树都是用回溯法，<br>今天在topcoder做SRM时学到一种求子集树的新方法：位运算。<br>第一重循环是枚举所有子集，共2^n个，即1 &lt;&lt; n个<br>第二重循环求集合所有j个元素的值，0或1。<br>求一下1 &amp; (1 &lt;&lt; j)的值就可以知道它的原理。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_25_557_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_557_Open_Text.style.display='none'; Codehighlighter1_25_557_Closed_Image.style.display='inline'; Codehighlighter1_25_557_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top twffan="done"><img id=Codehighlighter1_25_557_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_557_Closed_Text.style.display='none'; Codehighlighter1_25_557_Open_Image.style.display='inline'; Codehighlighter1_25_557_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top twffan="done">using&nbsp;</span><span id=Codehighlighter1_25_557_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Namespace&nbsp;std</span><span id=Codehighlighter1_25_557_Open_Text><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x[n];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">回溯法<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">void&nbsp;backtrack(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;t)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(t&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;n)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">x[i];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[t]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backtrack(t&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">位运算<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">void&nbsp;bitOperate()<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;n);&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;n;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;(i&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;j)&nbsp;)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;n;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">x[j];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;backtrack(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;bitOperate();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span></div>
</span>
<img src ="http://www.cppblog.com/shyli/aggbug/28547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-07-22 02:59 <a href="http://www.cppblog.com/shyli/archive/2007/07/22/28547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符串hash函数</title><link>http://www.cppblog.com/shyli/archive/2007/04/07/21455.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sat, 07 Apr 2007 08:22:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/04/07/21455.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/21455.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/04/07/21455.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/21455.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/21455.html</trackback:ping><description><![CDATA[字符串hash函数，解决冲突用开放定址法，每次对哈希值加1<br>在下列程序中，不是按常规方法用哈希表来记录关键字，<br>而是用整型数组Htable记录关键字在字符串ch中的位置。<br>在插入时不用把关键字复制到哈希表中，只是记录一个索引，从而提高了效率。<br>当查询时，只要把Htable的值映射到字符串ch中就可以了。<br>注意ch的下标要从1开始，因为Htable中的零值认为是空，处理起来比较方便。
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_42_671_Open_Image onclick="this.style.display='none'; Codehighlighter1_42_671_Open_Text.style.display='none'; Codehighlighter1_42_671_Closed_Image.style.display='inline'; Codehighlighter1_42_671_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top twffan="done"><img id=Codehighlighter1_42_671_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_671_Closed_Text.style.display='none'; Codehighlighter1_42_671_Open_Image.style.display='inline'; Codehighlighter1_42_671_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top twffan="done">using&nbsp;</span><span id=Codehighlighter1_42_671_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Namespace&nbsp;std</span><span id=Codehighlighter1_42_671_Open_Text><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MAXN&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9973</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">哈希表长度<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">len</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">30</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">字符串的最大长度<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Htable[MAX];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ch[MAX][</span><span style="COLOR: #0000ff">len</span><span style="COLOR: #000000">];&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">存储关键字的字符串<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;Hash(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;key)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;h&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">key)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(h&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">key</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;g&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;h&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;0xf0000000L;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(g)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;g&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">24</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;</span><span style="COLOR: #000000">&amp;=</span><span style="COLOR: #000000">&nbsp;~g;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;h&nbsp;%&nbsp;MAX;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;search(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;key)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Hash(key);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(Htable[i])<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(strcmp(ch[Htable[i]],&nbsp;key)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;%&nbsp;MAX;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;insert(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;key,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j)&nbsp;</span><span style="COLOR: #000000">//</span><span style="COLOR: #000000">j为关键字在ch中的位置，即索引<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Hash(key);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(Htable[i])<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;%&nbsp;MAX;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;Htable[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;j;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}</span></div>
</span>
<img src ="http://www.cppblog.com/shyli/aggbug/21455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-04-07 16:22 <a href="http://www.cppblog.com/shyli/archive/2007/04/07/21455.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>优先队列用法</title><link>http://www.cppblog.com/shyli/archive/2007/04/06/21366.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Thu, 05 Apr 2007 18:09:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/04/06/21366.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/21366.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/04/06/21366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/21366.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/21366.html</trackback:ping><description><![CDATA[<p>在优先队列中，优先级高的元素先出队列。<br>标准库默认使用元素类型的&lt;操作符来确定它们之间的优先级关系。<br>优先队列的第一种用法，也是最常用的用法：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000" twffan="done">priority_queue</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;qi;</span></div>
<p>通过&lt;操作符可知在整数中元素大的优先级高。<br>故示例1中输出结果为：9 6 5 3 2<br><br>第二种方法：<br>在示例1中，如果我们要把元素从小到大输出怎么办呢？<br>这时我们可以传入一个比较函数，使用functional.h函数对象作为比较函数。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000" twffan="done">priority_queue</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">,&nbsp;vector</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">,&nbsp;greater</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">qi2;</span></div>
<p>其中<br>第二个参数为容器类型。<br>第二个参数为比较函数。<br>故示例2中输出结果为：2 3 5 6 9<br><br>第三种方法：<br>自定义优先级。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000" twffan="done">struct&nbsp;node<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">friend</span><span style="COLOR: #000000" twffan="done">&nbsp;bool&nbsp;operator</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;(node&nbsp;n1,&nbsp;node&nbsp;n2)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done">&nbsp;n1.priority&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;n2.priority;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;priority;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;value;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">};</span></div>
<p>在该结构中，value为值，priority为优先级。<br>通过自定义operator&lt;操作符来比较元素中的优先级。<br>在示例3中输出结果为：<br>优先级&nbsp; 值<br>9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;5<br>8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br>6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4<br>但如果结构定义如下：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000" twffan="done">struct&nbsp;node<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">friend</span><span style="COLOR: #000000" twffan="done">&nbsp;bool&nbsp;operator</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;(node&nbsp;n1,&nbsp;node&nbsp;n2)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done">&nbsp;n1.priority&nbsp;</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;n2.priority;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;priority;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;value;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">};</span></div>
<p>则会编译不过（G++编译器）<br>因为标准库默认使用元素类型的&lt;操作符来确定它们之间的优先级关系。<br>而且自定义类型的&lt;操作符与&gt;操作符并无直接联系，故会编译不过。<br><br>//代码清单</p>
<span id=Codehighlighter1_62_1035_Open_Text twffan="done">
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #000000" twffan="done">#include</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">iostream</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">#include</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">functional</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">#include</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">queue</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done"><br><img id=Codehighlighter1_62_1035_Open_Image onclick="this.style.display='none'; Codehighlighter1_62_1035_Open_Text.style.display='none'; Codehighlighter1_62_1035_Closed_Image.style.display='inline'; Codehighlighter1_62_1035_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top twffan="done"><img id=Codehighlighter1_62_1035_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_1035_Closed_Text.style.display='none'; Codehighlighter1_62_1035_Open_Image.style.display='inline'; Codehighlighter1_62_1035_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top twffan="done">using&nbsp;</span><span id=Codehighlighter1_62_1035_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff" twffan="done">Namespace&nbsp;std</span><span id=Codehighlighter1_62_1035_Open_Text twffan="done"><span style="COLOR: #0000ff" twffan="done">namespace</span><span style="COLOR: #000000" twffan="done">&nbsp;std;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">struct&nbsp;node<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">friend</span><span style="COLOR: #000000" twffan="done">&nbsp;bool&nbsp;operator</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;(node&nbsp;n1,&nbsp;node&nbsp;n2)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done">&nbsp;n1.priority&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;n2.priority;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;priority;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;value;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">};<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;main()<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">const</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">5</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;a[</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">]&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;{</span><span style="COLOR: #000000" twffan="done">3</span><span style="COLOR: #000000" twffan="done">,</span><span style="COLOR: #000000" twffan="done">5</span><span style="COLOR: #000000" twffan="done">,</span><span style="COLOR: #000000" twffan="done">9</span><span style="COLOR: #000000" twffan="done">,</span><span style="COLOR: #000000" twffan="done">6</span><span style="COLOR: #000000" twffan="done">,</span><span style="COLOR: #000000" twffan="done">2</span><span style="COLOR: #000000" twffan="done">};<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000" twffan="done">//</span><span style="COLOR: #000000" twffan="done">示例1<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;priority_queue</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;qi;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qi.push(a[i]);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">qi.top()</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qi.pop();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000" twffan="done">//</span><span style="COLOR: #000000" twffan="done">示例2<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;priority_queue</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">,&nbsp;vector</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">,&nbsp;greater</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">qi2;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qi2.push(a[i]);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">qi2.top()</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qi2.pop();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000" twffan="done">//</span><span style="COLOR: #000000" twffan="done">示例3<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;priority_queue</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">node</span><span style="COLOR: #000000" twffan="done">&gt;</span><span style="COLOR: #000000" twffan="done">&nbsp;qn;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;b[</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">].priority&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">6</span><span style="COLOR: #000000" twffan="done">;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">].value&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">].priority&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">9</span><span style="COLOR: #000000" twffan="done">;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">].value&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">5</span><span style="COLOR: #000000" twffan="done">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">2</span><span style="COLOR: #000000" twffan="done">].priority&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">2</span><span style="COLOR: #000000" twffan="done">;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">2</span><span style="COLOR: #000000" twffan="done">].value&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">3</span><span style="COLOR: #000000" twffan="done">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">3</span><span style="COLOR: #000000" twffan="done">].priority&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">8</span><span style="COLOR: #000000" twffan="done">;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">3</span><span style="COLOR: #000000" twffan="done">].value&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">2</span><span style="COLOR: #000000" twffan="done">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">4</span><span style="COLOR: #000000" twffan="done">].priority&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">;&nbsp;b[</span><span style="COLOR: #000000" twffan="done">4</span><span style="COLOR: #000000" twffan="done">].value&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">4</span><span style="COLOR: #000000" twffan="done">;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qn.push(b[i]);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">优先级</span><span style="COLOR: #000000" twffan="done">"</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #008000" twffan="done">'</span><span style="COLOR: #008000" twffan="done">\t'&lt;&lt;"值"&lt;&lt;endl;</span><span style="COLOR: #008000" twffan="done"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">len</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #000000" twffan="done">qn.top().priority</span><span style="COLOR: #000000" twffan="done">&lt;&lt;</span><span style="COLOR: #008000" twffan="done">'</span><span style="COLOR: #008000" twffan="done">\t'&lt;&lt;qn.top().value&lt;&lt;endl;</span><span style="COLOR: #008000" twffan="done"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span><span style="COLOR: #000000" twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qn.pop();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done">}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top twffan="done"></span></div>
</span></span>
<img src ="http://www.cppblog.com/shyli/aggbug/21366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-04-06 02:09 <a href="http://www.cppblog.com/shyli/archive/2007/04/06/21366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>计数排序</title><link>http://www.cppblog.com/shyli/archive/2007/04/03/21130.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Mon, 02 Apr 2007 16:57:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/04/03/21130.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/21130.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/04/03/21130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/21130.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/21130.html</trackback:ping><description><![CDATA[k为数组a中最大值，n为数组a的长度。<br>countSort用于对整型数组排序，时间复杂度为O(k+n)。<br>当k = O(n)时，时间复杂度变为O(n)。<br>c[i]记录a数组中数值大于或等于i的个数<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee" twffan="done"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done"><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;countSort(</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">*</span><span style="COLOR: #000000" twffan="done">&nbsp;a,&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;k,&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;n)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;i;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">*</span><span style="COLOR: #000000" twffan="done">&nbsp;c&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;[k</span><span style="COLOR: #000000" twffan="done">+</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">],&nbsp;</span><span style="COLOR: #000000" twffan="done">*</span><span style="COLOR: #000000" twffan="done">&nbsp;b&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">new</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #0000ff" twffan="done">int</span><span style="COLOR: #000000" twffan="done">&nbsp;[n];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;=</span><span style="COLOR: #000000" twffan="done">&nbsp;k;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[i]&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;n;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[a[i]]</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;=</span><span style="COLOR: #000000" twffan="done">&nbsp;k;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[i]&nbsp;</span><span style="COLOR: #000000" twffan="done">+=</span><span style="COLOR: #000000" twffan="done">&nbsp;c[i</span><span style="COLOR: #000000" twffan="done">-</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;n&nbsp;</span><span style="COLOR: #000000" twffan="done">-</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&gt;=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i</span><span style="COLOR: #000000" twffan="done">--</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[c[a[i]]</span><span style="COLOR: #000000" twffan="done">-</span><span style="COLOR: #000000" twffan="done">1</span><span style="COLOR: #000000" twffan="done">]&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;a[i];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[a[i]]</span><span style="COLOR: #000000" twffan="done">--</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">for</span><span style="COLOR: #000000" twffan="done">(i&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;&nbsp;i&nbsp;</span><span style="COLOR: #000000" twffan="done">&lt;</span><span style="COLOR: #000000" twffan="done">&nbsp;n;&nbsp;i</span><span style="COLOR: #000000" twffan="done">++</span><span style="COLOR: #000000" twffan="done">)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[i]&nbsp;</span><span style="COLOR: #000000" twffan="done">=</span><span style="COLOR: #000000" twffan="done">&nbsp;b[i];<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;b;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;c;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff" twffan="done">return</span><span style="COLOR: #000000" twffan="done">&nbsp;</span><span style="COLOR: #000000" twffan="done">0</span><span style="COLOR: #000000" twffan="done">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top twffan="done">}</span></div>
<img src ="http://www.cppblog.com/shyli/aggbug/21130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-04-03 00:57 <a href="http://www.cppblog.com/shyli/archive/2007/04/03/21130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记七</title><link>http://www.cppblog.com/shyli/archive/2007/03/16/19938.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Thu, 15 Mar 2007 17:29:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/03/16/19938.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/19938.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/03/16/19938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/19938.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/19938.html</trackback:ping><description><![CDATA[
		<hr />
学到了一个新的知识点：函数对象。<br />定义了调用操作符的类，其对象称为函数对象。<br />例如<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_25_188_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_188_Open_Text.style.display='none'; Codehighlighter1_25_188_Closed_Image.style.display='inline'; Codehighlighter1_25_188_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_188_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_188_Closed_Text.style.display='none'; Codehighlighter1_25_188_Open_Image.style.display='inline'; Codehighlighter1_25_188_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />using </span><span id="Codehighlighter1_25_188_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Namespace std</span><span id="Codehighlighter1_25_188_Open_Text"><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000"> std;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />struct absInt<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> operator() (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> v)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    {<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> v </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"> ? v : </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">v;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    }<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />};<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> main()<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />{ <br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    absInt obj;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> a </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> obj(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">15</span><span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />}</span></span></div>输出结果为15。<br />对类absInt的对象obj使用调用操作符就像使用函数一样。<img src ="http://www.cppblog.com/shyli/aggbug/19938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-03-16 01:29 <a href="http://www.cppblog.com/shyli/archive/2007/03/16/19938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>插入排序泛型算法</title><link>http://www.cppblog.com/shyli/archive/2007/02/06/18485.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Tue, 06 Feb 2007 11:13:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/02/06/18485.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/18485.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/02/06/18485.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/18485.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/18485.html</trackback:ping><description><![CDATA[
		<pre>template &lt;typename Iter&gt;
void insertSort(Iter *begin, Iter *end)
{
	for(Iter *it = begin + 1; it != end; it++)
	{
		Iter tmp = *it;
		Iter *it2 = it - 1;
		while(it2 &gt; begin - 1 &amp;&amp; *it2 &gt; tmp)
		{
			*(it2 + 1) = *it2;
			it2 --;
		}
		*(it2 + 1) = tmp;
	}
}
</pre>
<img src ="http://www.cppblog.com/shyli/aggbug/18485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-02-06 19:13 <a href="http://www.cppblog.com/shyli/archive/2007/02/06/18485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记六</title><link>http://www.cppblog.com/shyli/archive/2007/01/30/18185.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Tue, 30 Jan 2007 10:04:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/01/30/18185.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/18185.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/01/30/18185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/18185.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/18185.html</trackback:ping><description><![CDATA[
		<pre>
模板作用域中的模板类型引用。
template &lt;class elemType&gt; class ListItem;
template &lt;class elemType&gt; class List
{
	public:
		List&lt;elemType&gt; ();
		~List();
	private:
		//ListItem *front;
		//ListItem *end;
		ListItem&lt;elemType&gt; *front;
		ListItem&lt;elemType&gt; *end;

};
通常使用类模板的名字的时候，必须指定模板形参。
但在类本身的作用域内部，可以使用类模板的非限定名。
例如：List是List&lt;elemType&gt;的缩写。
但编译器不会为类中使用的其他的模板形参进行这样的推断，因此必须指定类型形参。
例如在List模板类中使用ListItem模板类时，
ListItem *front 是错误的
ListItem&lt;elemType&gt; *front 才是正确的。
</pre>
<img src ="http://www.cppblog.com/shyli/aggbug/18185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-01-30 18:04 <a href="http://www.cppblog.com/shyli/archive/2007/01/30/18185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记五</title><link>http://www.cppblog.com/shyli/archive/2007/01/22/17901.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Mon, 22 Jan 2007 15:50:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2007/01/22/17901.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/17901.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2007/01/22/17901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/17901.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/17901.html</trackback:ping><description><![CDATA[
		<pre>
#include&lt;cstdio&gt;
using namespace std;
template&lt;class T, class T1, class T2&gt;
T sum(T1 v1, T2 v2)
{
	T value = v1 + v2;
	return value;
}
int main()
{
	int i = sum&lt;int&gt;(1,2.1);//调用正确。
	return 0;
}
#include&lt;cstdio&gt;
using namespace std;
template&lt;class T1, class T2, class T&gt;
T sum(T1 v1, T2 v2)
{
	T value = v1 + v2;
	return value;
}
int main()
{
	int j = sum&lt;int&gt;(1,2.1);//调用错误。
	int k = sum&lt;int, int, double&gt;(1,2.1);//调用正确。
	return 0;
}
这两种区别就在于template的定义：
template&lt;class T, class T1, class T2&gt;
与
template&lt;class T1, class T2, class T&gt;
显式模板实参与对应模板形参相匹配。
int j = sum&lt;int&gt;(1,2.1);
在这个调用中，int对应的是T1, 没有实参的类型可以推断T的类型，故该调用是错误的。
</pre>
<img src ="http://www.cppblog.com/shyli/aggbug/17901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2007-01-22 23:50 <a href="http://www.cppblog.com/shyli/archive/2007/01/22/17901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记四</title><link>http://www.cppblog.com/shyli/archive/2006/11/20/15443.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sun, 19 Nov 2006 16:46:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/11/20/15443.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/15443.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/11/20/15443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/15443.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/15443.html</trackback:ping><description><![CDATA[泛型编程的两个重要原则 
<li>模板的形参是const引用。 
</li><li>函数体中的测试只用&lt;比较。 <br />形参用const参数可以使函数运行得更加快。 <br />只用&lt;比较对参数类型的要求：只须支持&lt;，但不必支持&gt;。</li><img src ="http://www.cppblog.com/shyli/aggbug/15443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-11-20 00:46 <a href="http://www.cppblog.com/shyli/archive/2006/11/20/15443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>scanf()函数</title><link>http://www.cppblog.com/shyli/archive/2006/10/18/13840.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Wed, 18 Oct 2006 14:51:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/10/18/13840.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/13840.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/10/18/13840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/13840.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/13840.html</trackback:ping><description><![CDATA[
		<p>转自：<a href="http://blog.csdn.net/liu_tang/archive/2006/08/01/1008611.aspx">http://blog.csdn.net/liu_tang/archive/2006/08/01/1008611.aspx</a><br />函数名: scanf <br />功  能: 执行格式化输入 <br />用  法: int scanf(char *format[,argument,...]);</p>
		<p>scanf()函数是通用终端格式化输入函数，它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。</p>
		<p>其调用格式为:      scanf("&lt;格式化字符串&gt;"，&lt;地址表&gt;);</p>
		<p>scanf()函数返回成功赋值的数据项数，出错时则返回EOF。</p>
		<p>其控制串由三类字符构成：</p>
		<p>1。格式化说明符；<br />2。空白符；<br />3。非空白符；</p>
		<p>
				<br />（A）                格式化说明符</p>
		<p>
				<br />格式字符           说明</p>
		<p>%a                 读入一个浮点值(仅C99有效) <br />%A                 同上<br />%c                 读入一个字符<br />%d                 读入十进制整数<br />%i                 读入十进制，八进制，十六进制整数<br />%o                 读入八进制整数<br />%x                 读入十六进制整数<br />%X                 同上<br />%c                 读入一个字符<br />%s                 读入一个字符串<br />%f                 读入一个浮点数<br />%F                 同上<br />%e                 同上<br />%E                 同上<br />%g                 同上<br />%G                 同上<br />%p                 读入一个指针<br />%u                 读入一个无符号十进制整数<br />%n                 至此已读入值的等价字符数<br />%[]                扫描字符集合<br />%%                 读%符号<br /></p>
<img src ="http://www.cppblog.com/shyli/aggbug/13840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-10-18 22:51 <a href="http://www.cppblog.com/shyli/archive/2006/10/18/13840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>istringstream用法</title><link>http://www.cppblog.com/shyli/archive/2006/10/17/13758.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Mon, 16 Oct 2006 16:37:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/10/17/13758.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/13758.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/10/17/13758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/13758.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/13758.html</trackback:ping><description><![CDATA[istringstream对象可以绑定一行字符串，然后以空格为分隔符把该行分隔开来。<br /><pre>#include&lt;iostream&gt;
#include&lt;sstream&gt;
using namespace std;
int main()
{
	string str, line;
	while(getline(cin, line))
	{
		istringstream stream(line);
		while(stream&gt;&gt;str)
			cout&lt;&lt;str.c_str()&lt;&lt;endl;
	}	
	return 0;
}</pre>测试：<br />input：<br />abc   df   e              efgeg      ffg<br /><br />ouput：<br />abc<br />df<br />e<br />efgeg<br />ffg<br /><img src ="http://www.cppblog.com/shyli/aggbug/13758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-10-17 00:37 <a href="http://www.cppblog.com/shyli/archive/2006/10/17/13758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>itoa函数</title><link>http://www.cppblog.com/shyli/archive/2006/10/12/13588.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Wed, 11 Oct 2006 16:59:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/10/12/13588.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/13588.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/10/12/13588.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/13588.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/13588.html</trackback:ping><description><![CDATA[
		<pre>#include&lt;cstdlib&gt;<br />#include&lt;cstdio&gt;<br />int main()
{
	int num = 10;
	char str[100];
	itoa(num, str, 2);
	printf("%s\n", str);
	return 0;
}</pre>itoa()函数有3个参数：第一个参数是要转换的数字，第二个参数是目标字符串，第三个参数是转移数字时所用 的基数。在上例中，转换基数为10。10：十进制；2：二进制……<br />于是想到了一个十进制转二进制的方法： <pre>#include&lt;cstdlib&gt;<br />#include&lt;cstdio&gt;<br />int main()
{
	int num = 10;
	char str[100];
	int n = atoi(itoa(num, str, 2));
	printf("%d\n",n);
	return 0;
}<br />先把num转换为二进制的字符串，再把该字符串转换为整数。</pre><img src ="http://www.cppblog.com/shyli/aggbug/13588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-10-12 00:59 <a href="http://www.cppblog.com/shyli/archive/2006/10/12/13588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++高手必看的C++书单 </title><link>http://www.cppblog.com/shyli/archive/2006/09/21/12775.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Wed, 20 Sep 2006 16:13:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/09/21/12775.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/12775.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/09/21/12775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/12775.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/12775.html</trackback:ping><description><![CDATA[
		<p>转载自：<a href="/zerolee/archive/2006/09/12/12335.html">http://www.cppblog.com/zerolee/archive/2006/09/12/12335.html</a><font face="Courier New" size="2"><font color="#ff1493"><strong><br /><br />增添于网上的一些书单：</strong></font><br />C++/OPP/OOD系列: <br /><strong><font color="#0000ff">层级一：语法/语意(C++)</font></strong><br />[Lippman2000] Essential C++ <br />Essential C++,by Stanley B. Lippman Addison Wesley Longman 2000,276 pages <br />Essential C++ 中文版 ，侯俊杰 译，282页 </font></p>
		<p>
				<font face="Courier New" size="2">[Andrew Koeing &amp; Barbara MOO] Accelerated C++<br />Accelerated c++, Andrew Koeing &amp; Barbara MOO, Addison Wesley, 2000<br /><br /></font>
				<font face="Courier New" size="2">[Eckel2000] Thinking in C++ <br />Thinking in C++ 2/e Bruce Eckel 2000 1470 pages Prentice Hall <br />C++ 编程思想，刘宗田等 译，420页 </font>
		</p>
		<p>
				<font face="Courier New" size="2">[Lippman98] C++Primer <br />C++ Primer,3rd Editoin,by Stanley Lippman and Josee Lajoie <br />Addison Wesley Longman,1998 1237 pages <br />C++ Primer 中文版，侯俊杰 译，1999，1237页 </font>
		</p>
		<p>
				<font face="Courier New" size="2">[Struostrup2000] The C++ Programming Language <br />The C++ Programming Language,Special Editoin,by Bjarne Stroustrup <br />Addison Wesley Longman,2000,1017 pages <br /></font>
				<font face="Courier New" size="2">
						<br />[ANSI C++] C++规格书 1998.9.1 PDF格式 <br />ANSI C++ 1996 Draft </font>
		</p>
		<p>
				<br />
				<font face="Courier New" size="2">
						<font color="#0000ff">
								<strong>层级二：专家经验(C++/OOP)</strong>
						</font>
						<br />[Meyers96] More Effective C++ <br />More Effective C++, by Scott Meyers,Addison Wesley,1996,318pages <br />More Effective C++中文版，侯俊杰，培生 2000. 318页 </font>
		</p>
		<p>
				<font face="Courier New" size="2">[Meyers98] Effective C++ <br />Effective C++, Second Edition,by Scott Meyers,Addison Wesley Longman,1998.256pages <br />Effective C++ 2/e 中文版,侯俊杰,培生 2000.256页<br />Effective C++, Third Edition, by Scott Meyers, Addison Wesley Longman.</font>
		</p>
		<p>
				<font face="Courier New" size="2">[Sutter99] Exceptional C++ <br />Exceptional C++，by Herb Sutter,Addison Wesley Longman,2000.208pages <br />Exceptional C++中文版，侯俊杰,培生 2000.248页 </font>
		</p>
		<p>
				<font face="Courier New" size="2">[Sutter2001]More Exceptional C++ <br />More Exceptional C++ by Herb Sutter, Addison Wesley Longman, 2001. <br /><br />[Sutter2004]Exception C++ Style<br />Exception C++ Style by Herb Sutter, Addison Wesley Longman, 2004.</font>
		</p>
		<p>
				<font face="Courier New" size="2">
						<font color="#0000ff">
								<strong>层级三：底层机制(C++ Object Model)</strong>
						</font>
						<br />[Ellis90] The Annotated C++ Reference Manual <br />The Annotated C++ Reference Manual,by Margaret A.Ellis and Bjarne Stroustrup <br />Addison Wesley Longman,1990,447 pages. </font>
		</p>
		<p>
				<font face="Courier New" size="2">[Lippman96] Inside the C++ Object Model <br />Inside the C++ Object Model,by Stanley Lippman,Addison Wesley Longman,1996,280pages <br />深度探索C++物件模型，侯俊杰 译 <br /></font>
				<br />
				<font face="Courier New" size="2">
						<font color="#0000ff">
								<strong>层级四：设计观念的复用(C++/Patterns)</strong>
						</font>
						<br />[Gamma95] Design Patterns：Elements of Reusable Object Oriented Software, <br />by Erich Gamma,Richard Helm,Ralph Johnson,and John Vlissides,Addison Wesley,1995.395pages <br />设计模式,李英军等译,机械工业出版社,2000.254页 </font>
		</p>
		<p>
				<font face="Courier New" size="2">[Alex2001]Modern C++ Design: Generic Programming and Design Patterns Applied <br />by Andrei Alexandrescu,Addison-Wesley,2001,352Paper </font>
		</p>
		<p>
				<br />
				<font face="Courier New" size="2">
						<font color="#0000ff">
								<strong>Genericity/STL系列(与层级二同步）:</strong>
						</font>
						<br />第一个境界是使用STL: <br />[Josuttis99]:The C++ Standard Library －A Tutorial and Reference,by Nicolai M.Josuttis, <br />Addison Wesley 1999.799pages </font>
		</p>
		<p>
				<font face="Courier New" size="2">第二个境界是了解泛型技术的内涵与STL的学理: <br />[Austern98]:Generic Programming and the STL -Using and Extending the C++ Standard <br />Template library,by Matthew H.Austern,Addison Wesley 1998.548page </font>
		</p>
		<p>
				<br />
				<font size="2">
						<font face="Courier New">第三个境界是扩充STL: <br />[Stepanov2001]:C++ Standard Template Library by P.J.Plauger,Alexander A.Stepanov, <br />Meng Lee,David R.Musser,Prentice Hall 2001 <br /><br /><strong><font color="#ff1493">其他书目</font></strong>：<br />1. Large-scale C++ software Design, John Lako, Addison Wesley, 1996<br />2. Effective STL, Scott Meyers, Addison Wesley, 1995<br />3. C++ FAQs, 2nd, Marshall Cline, Greg Lomow, Mike Girou, Addison Wesley, 1998<br />4. C++ Gotchas, Stephen Dewhurst, Addison Wesley, 2002<br />5. C++ templates, the complete Guide, Daveed Vandevoorde &amp; Nicolar M.Josuttis, Addison Wesley, 2002<br />6. Standard C++ iostreams and Locals, Angelika Langer &amp; Klaus Kreft, Addison Wesley, 2000<br />7. Design &amp; Evolution of C++, BS, Addison Wesley, 1994<br />8. Modern C++ Design, Andrie Alexandrescu, Addison Wesley, 2001<br />9. Generative Programming, Krzysztof Czarnecki &amp; Ulrich Eisencecker, Addison Wesley, 2000<br />10.Pattern-oriented software architecture, Vol1:A system of patterns, Frank Buschmann, 1996<br />11. STL 源码剖析，侯杰<br />12. C++ Coding Standards 101 Rules Guidelines, Andrie Alexandrescu &amp; Herb Sutter, Addison Wesley, 2005<br /></font>
				</font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/12775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-09-21 00:13 <a href="http://www.cppblog.com/shyli/archive/2006/09/21/12775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>刚接触泛型编程</title><link>http://www.cppblog.com/shyli/archive/2006/09/20/12774.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Wed, 20 Sep 2006 15:54:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/09/20/12774.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/12774.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/09/20/12774.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/12774.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/12774.html</trackback:ping><description><![CDATA[写了algorithm头文件中的2个算法：<br /><br /><pre>find.h
#ifndef FIND_H
#define FIND_H
template &lt;typename ITER , typename T&gt;
ITER find(ITER begin, ITER end, T value)
{
	ITER it;
	for(it = begin; it != end; ++it)
		if(*it == value)
			break;
	return it;
}
#endif
</pre><br /><pre><br />
count.h
#ifndef COUNT_H
#define COUNT_H
template &lt;typename ITER , typename T&gt;
int count(ITER begin, ITER end, T value)
{
	int sum = 0;
	for(ITER it = begin; it != end; ++it)
	{
		if(*it == value)
			++sum;
	}
	return sum;
}
#endif
</pre><pre>以后接着写。</pre><img src ="http://www.cppblog.com/shyli/aggbug/12774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-09-20 23:54 <a href="http://www.cppblog.com/shyli/archive/2006/09/20/12774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记三</title><link>http://www.cppblog.com/shyli/archive/2006/08/03/10825.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Thu, 03 Aug 2006 13:18:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/08/03/10825.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/10825.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/08/03/10825.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/10825.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/10825.html</trackback:ping><description><![CDATA[
		<p>顺序容器的比较</p>
		<table bgcolor="#cccccc" border="1">
				<tbody>
						<tr>
								<td>
										<font size="2">插入|删除位置 </font>
										<div align="right">
												<font size="2">/效率</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">头部</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">中间</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">尾部</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">随机访问</font>
										</div>
								</td>
						</tr>
						<tr>
								<td>
										<div align="center">
												<font size="2">vector</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">低</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">低</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">高</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">Yes</font>
										</div>
								</td>
						</tr>
						<tr>
								<td>
										<div align="center">
												<font size="2">list</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">高</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">高</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">高</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">No</font>
										</div>
								</td>
						</tr>
						<tr>
								<td>
										<div align="center">
												<font size="2">deque</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">高</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">低</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">高</font>
										</div>
								</td>
								<td>
										<div align="center">
												<font size="2">Yes</font>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cppblog.com/shyli/aggbug/10825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-08-03 21:18 <a href="http://www.cppblog.com/shyli/archive/2006/08/03/10825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记二</title><link>http://www.cppblog.com/shyli/archive/2006/06/28/9086.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Tue, 27 Jun 2006 16:10:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/06/28/9086.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/9086.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/06/28/9086.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/9086.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/9086.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">创建对象的几种方式的效率比较</font>
		</p>
		<p>
				<font size="2">这里以string类为例：</font>
		</p>
		<p>
				<font size="2">1、string str1 = "";<br />2、string str2 = string();<br />3、string str3;</font>
		</p>
		<p>
				<font size="2">第一种方式：调用string类接受字符串形参的构造函数，创建一个临时对象。<br />然后调用复制构造函数用该对象初始化str1。</font>
		</p>
		<p>
				<font size="2">第二种方式：调用string类的默认构造函数，创建一个临时对象。<br />然后调用复制构造函数用该对象初始化str2。</font>
		</p>
		<p>
				<font size="2">第三种方式：直接调用string类的默认构造函数初始化str3。</font>
		</p>
		<p>
				<font size="2">创建临时对象的代价是高的。</font>
		</p>
		<p>
				<font size="2">因此创建对象应尽量不要使用会创建临时对象的初始化方式。</font>
		</p>
		<p>
				<font size="2">在使用类时也尽量不要创建临时对象。</font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/9086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-06-28 00:10 <a href="http://www.cppblog.com/shyli/archive/2006/06/28/9086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》之读书笔记一</title><link>http://www.cppblog.com/shyli/archive/2006/06/27/9053.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Mon, 26 Jun 2006 16:11:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/06/27/9053.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/9053.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/06/27/9053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/9053.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/9053.html</trackback:ping><description><![CDATA[
		<font size="2">包含以下成员的类的构造函数必须使用初始化 <br /><br /></font>
		<font size="2">1、 没有默认构造函数的类类型的成员。</font>
		<font size="2">
				<br />2、 const成员。<br />3、</font>
		<font size="2">引用类型的成员。 </font>
<img src ="http://www.cppblog.com/shyli/aggbug/9053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-06-27 00:11 <a href="http://www.cppblog.com/shyli/archive/2006/06/27/9053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual Assist</title><link>http://www.cppblog.com/shyli/archive/2006/06/18/8688.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sun, 18 Jun 2006 09:39:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/06/18/8688.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/8688.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/06/18/8688.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/8688.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/8688.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#000000" size="2">推荐一款快速编辑C++代码的插件Visual Assist。 </font>
		</p>
		<p>
				<font color="#000000" size="2">它能自动识别各种关键字，系统函数，成员变量， </font>
		</p>
		<p>
				<font color="#000000" size="2">自动给出输入提示，自动更正大小写错误， </font>
		</p>
		<p>
				<font color="#000000" size="2">自动标示错误，等等等等。 </font>
		</p>
		<p>
				<font color="#000000" size="2">用了它，你写代码的速度一定大大提高。 </font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/8688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-06-18 17:39 <a href="http://www.cppblog.com/shyli/archive/2006/06/18/8688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针与0</title><link>http://www.cppblog.com/shyli/archive/2006/06/10/8371.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sat, 10 Jun 2006 05:01:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/06/10/8371.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/8371.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/06/10/8371.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/8371.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/8371.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#000000" size="2">Once in a time... </font>
		</p>
		<p>
				<font color="#000000" size="2">看到一段代码： </font>
		</p>
		<p>
				<font color="#000000" size="2">char *p1,*p2;<br />//something<br />if(p1!=0)strcpy(p2,p1); </font>
		</p>
		<p>
				<font color="#000000" size="2">奇怪，指针怎么能够和0相比呢？ </font>
		</p>
		<p>
				<br />
				<font color="#000000" size="2">N days later... </font>
		</p>
		<p>
				<font color="#000000" size="2">一个有效的指针有三种状态： </font>
		</p>
		<p>
				<font color="#000000" size="2">一、保存一个特定对象的地址。 </font>
		</p>
		<p>
				<font color="#000000" size="2">二、指向某个对象后面的另一对象。 </font>
		</p>
		<p>
				<font color="#000000" size="2">三、值为0，表明它不指向任何对象。 </font>
		</p>
		<p>
				<font color="#000000" size="2">if(p1!=0)strcpy(p2,p1);<br />&lt;=&gt;<br />if(p1!=NULL)strcpy(p2,p1);// 这种形式更易理解。 </font>
		</p>
		<p>
				<font color="#000000" size="2">NULL 是在 cstdlib 头文件中定义的变量，值为0. <br /></font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/8371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-06-10 13:01 <a href="http://www.cppblog.com/shyli/archive/2006/06/10/8371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试程序运行时间</title><link>http://www.cppblog.com/shyli/archive/2006/05/28/7768.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sun, 28 May 2006 05:15:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/05/28/7768.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/7768.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/05/28/7768.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/7768.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/7768.html</trackback:ping><description><![CDATA[
		<font face="Garamond" color="#000000" size="2">ACM题目大都有规定运行时间的，<br /><br />那么我们如何测得程序运行时间呢？<br /><br />这就得益于C++函数库time.h<br /><br />下面是一段示范代码：<br /><br /><font size="3">#include&lt;iostream&gt;<br />#include&lt;time.h&gt;<br />using namespace std;<br />int main()<br />{<br />       long beginTime =clock();//<font size="2">获得开始时间，单位为毫秒<br /></font><br />       for(int i=0;i&lt;10000;i++){cout&lt;&lt;i&lt;&lt;endl;}//<font size="2">输出10000行数字<br /></font><br />       long endTime=clock();//<font size="2">获得结束时间<br /></font><br />      cout&lt;&lt;"beginTime:"&lt;&lt;beginTime&lt;&lt;endl<br />             &lt;&lt;"endTime:"&lt;&lt;endTime&lt;&lt;endl<br />             &lt;&lt;"endTime-beginTime:"&lt;&lt;endTime-beginTime&lt;&lt;endl;<br /><br />       return 0;<br />} <br /></font></font>
<img src ="http://www.cppblog.com/shyli/aggbug/7768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-05-28 13:15 <a href="http://www.cppblog.com/shyli/archive/2006/05/28/7768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对不存在的元素进行下标操作</title><link>http://www.cppblog.com/shyli/archive/2006/05/24/7585.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Wed, 24 May 2006 10:19:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/05/24/7585.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/7585.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/05/24/7585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/7585.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/7585.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#808080" size="2">很多初学者在用string 类的时候会犯这样的错误：</font>
		</p>
		<p>
				<font color="#808080" size="2">操作不存在的元素，如:</font>
		</p>
		<p>
				<font color="#808080" size="2">#include&lt;iostream&gt;<br />#include&lt;string&gt;<br />using namespace std;<br />int main()<br />{<br />       string str;<br />       cin&gt;&gt;str[0];<br />       cout&lt;&lt;str[0];<br />       return 0;<br />}</font>
		</p>
		<p>
				<font color="#808080" size="2">这样得到输出的结果是不确定的。</font>
		</p>
		<p>
				<font color="#808080" size="2">因为在这里创建的是一个空 string 类，</font>
		</p>
		<p>
				<font color="#808080" size="2">长度为0，值为""(空)。</font>
		</p>
		<p>
				<font color="#808080" size="2">因此不存在str[0]。</font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/7585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-05-24 18:19 <a href="http://www.cppblog.com/shyli/archive/2006/05/24/7585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组最大长度问题</title><link>http://www.cppblog.com/shyli/archive/2006/05/06/6692.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sat, 06 May 2006 15:32:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/05/06/6692.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/6692.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/05/06/6692.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/6692.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/6692.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#808080" size="2">最近遇到了一个问题：</font>
		</p>
		<p>
				<font color="#808080" size="2">在函数内定义了一个一百万的数组。</font>
		</p>
		<p>
				<font color="#808080" size="2">编译、连接没问题，但执行时就会提示堆栈溢出。</font>
		</p>
		<p>
				<font color="#808080" size="2">但定义全局变量却没有问题。</font>
		</p>
		<p>
				<font color="#808080" size="2">谁能给我解释一下为什么？</font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/6692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-05-06 23:32 <a href="http://www.cppblog.com/shyli/archive/2006/05/06/6692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于语句作用域</title><link>http://www.cppblog.com/shyli/archive/2006/05/03/6583.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Tue, 02 May 2006 17:11:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/05/03/6583.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/6583.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/05/03/6583.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/6583.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/6583.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#808080" size="2">一直以来就有一个问题困惑着我，</font>
		</p>
		<p>
				<font color="#808080" size="2">对于下面一段程序：</font>
		</p>
		<p>
				<font color="#808080" size="2">#include&lt;iostream&gt;<br />using namespace std;<br />int main()<br />{<br />     for(int i=0;i&lt;10;i++)<br />     {/*content*/} <br />  <br />     for(int i=0;i&lt;10;i++)<br />     {/*content*/}   <br /><br />      return 0;<br />} <br /></font>
		</p>
		<p>
		</p>
		<p>
				<font color="#808080" size="2">在VC 6.0编译器中是“i” redefinition。</font>
		</p>
		<p>
				<font color="#808080" size="2">而在Dev-C++编译器中是完全正确的。</font>
		</p>
		<p>
				<font color="#808080" size="2">我也一直搞不清楚i的作用域是什么。</font>
		</p>
		<p>
				<font color="#808080" size="2">直到看过Primer后才知道有一种作用域叫做“语句作用域”。</font>
		</p>
		<p>
				<font color="#808080" size="2">就是说就上述问题的i只能在for语句中使用。</font>
		</p>
		<p>
				<font color="#808080" size="2">这就是说这是VC 6.0的一个Bug,真是这样吗？</font>
		</p>
		<p>
				<font color="#808080">
						<br />
						<font size="2">
						</font>
				</font> </p>
<img src ="http://www.cppblog.com/shyli/aggbug/6583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-05-03 01:11 <a href="http://www.cppblog.com/shyli/archive/2006/05/03/6583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《C++ Primer》终于到货了</title><link>http://www.cppblog.com/shyli/archive/2006/04/19/5901.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Wed, 19 Apr 2006 10:48:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/04/19/5901.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/5901.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/04/19/5901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/5901.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/5901.html</trackback:ping><description><![CDATA[
		<font color="#808080" size="2">半个学期过去了，《C++ Primer》中文版第四版终于出版了。<br /><br />今天在China-pub的订单终于到货了。<br /><br />现在总算有一本C++ 的书籍来学习了。<br /><br />在这本书没来之前，C++的学习算中断了半个学期。<br /><br />只是在学PHP。<br /><br />今天又可以恢复学习C++了。<br /><br />怎一个爽字了得。<br /><br /><br /></font>
<img src ="http://www.cppblog.com/shyli/aggbug/5901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-04-19 18:48 <a href="http://www.cppblog.com/shyli/archive/2006/04/19/5901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何创建二维数组？</title><link>http://www.cppblog.com/shyli/archive/2006/04/05/5011.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Tue, 04 Apr 2006 17:10:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/04/05/5011.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/5011.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/04/05/5011.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/5011.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/5011.html</trackback:ping><description><![CDATA[
		<font color="#808080" size="2">有时需要创建n*n的二维数组。<br /><br />于是我就用如下代码：<br />      int ** a=new int * [n];   //或 int *(* a)=new int * [n];   <br />      for(int i=0;i&lt;n;i++)a[i]=new int [n];<br /><br />不知有没有更好的办法?</font>
<img src ="http://www.cppblog.com/shyli/aggbug/5011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-04-05 01:10 <a href="http://www.cppblog.com/shyli/archive/2006/04/05/5011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谨慎字符数组下标越界！</title><link>http://www.cppblog.com/shyli/archive/2006/03/28/4669.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Mon, 27 Mar 2006 17:11:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/03/28/4669.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/4669.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/03/28/4669.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/4669.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/4669.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#808080" size="2">今天做ACM就是由于没有注意这个问题而Wrong Aswer了几次。</font>
		</p>
		<p>
				<font color="#808080" size="2">题目说明要输入的字符串长度最多为8。</font>
		</p>
		<p>
				<font color="#808080" size="2">因此我就只申请了8个字符。</font>
		</p>
		<p>
				<font color="#808080" size="2">结果当然就是错了。</font>
		</p>
		<p>
				<font color="#808080" size="2">其实字符数组需要一个存储单元来保存结束符“\0”，</font>
		</p>
		<p>
				<font color="#808080" size="2">用来说明一个字符串结束了。</font>
		</p>
		<p>
				<font color="#808080" size="2">因此要申请比字符串多一个存储单元的长度。</font>
		</p>
		<p>
				<font color="#808080" size="2">记住了！！</font>
		</p>
		<p>
				<font color="#808080" size="2">从此不能犯同样错误！<br /></font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/4669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-03-28 01:11 <a href="http://www.cppblog.com/shyli/archive/2006/03/28/4669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常引用参数与传值参数的区别</title><link>http://www.cppblog.com/shyli/archive/2006/03/17/4304.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Fri, 17 Mar 2006 15:49:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/03/17/4304.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/4304.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/03/17/4304.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/4304.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/4304.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#808080" size="2">看过一些书后终于明白这两种参数的内在区别。<br /><br />传值参数：<br /><br />在内存中开辟新的内存空间，然后把变量值复制到该内存空间来。<br /><br /><br />引用参数：<br /><br />直接把变量的地址传过来。<br /><br /><br />引用参数的好处就是不用产生临时变量，减少内存开销。因此常用于对大对象的操作。<br /><br />而常引用就是为了保护对像不被修改。</font>
		</p>
<img src ="http://www.cppblog.com/shyli/aggbug/4304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-03-17 23:49 <a href="http://www.cppblog.com/shyli/archive/2006/03/17/4304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组下标</title><link>http://www.cppblog.com/shyli/archive/2006/03/03/3696.html</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Fri, 03 Mar 2006 12:41:00 GMT</pubDate><guid>http://www.cppblog.com/shyli/archive/2006/03/03/3696.html</guid><wfw:comment>http://www.cppblog.com/shyli/comments/3696.html</wfw:comment><comments>http://www.cppblog.com/shyli/archive/2006/03/03/3696.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shyli/comments/commentRss/3696.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shyli/services/trackbacks/3696.html</trackback:ping><description><![CDATA[<P><FONT color=#808080 size=2>大家都知道数组第一个元素都是以0做为下标的。<BR><BR>不知道这样做有什么优点？<BR><BR>但是有些时候却不习惯。<BR><BR>比如说建立一个12个元素的数组m[12]来代表12个月。<BR><BR>则m[0]代表第一个月。<BR><BR><BR><BR></FONT></P><img src ="http://www.cppblog.com/shyli/aggbug/3696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shyli/" target="_blank">beyonlin</a> 2006-03-03 20:41 <a href="http://www.cppblog.com/shyli/archive/2006/03/03/3696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>