﻿<?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++博客-深蓝色的空间</title><link>http://www.cppblog.com/ggggqqqqihc/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:43:10 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:43:10 GMT</pubDate><ttl>60</ttl><item><title>关于哈希表——一个常见的谬误</title><link>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43706.html</link><dc:creator>Wang Jinbo</dc:creator><author>Wang Jinbo</author><pubDate>Tue, 04 Mar 2008 14:13:00 GMT</pubDate><guid>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43706.html</guid><wfw:comment>http://www.cppblog.com/ggggqqqqihc/comments/43706.html</wfw:comment><comments>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43706.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.cppblog.com/ggggqqqqihc/comments/commentRss/43706.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ggggqqqqihc/services/trackbacks/43706.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很多书上说哈希表的大小最好是一个质数，我对此表示怀疑。&nbsp;&nbsp;<a href='http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43706.html'>阅读全文</a><img src ="http://www.cppblog.com/ggggqqqqihc/aggbug/43706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ggggqqqqihc/" target="_blank">Wang Jinbo</a> 2008-03-04 22:13 <a href="http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++课程的作业</title><link>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43668.html</link><dc:creator>Wang Jinbo</dc:creator><author>Wang Jinbo</author><pubDate>Tue, 04 Mar 2008 04:31:00 GMT</pubDate><guid>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43668.html</guid><wfw:comment>http://www.cppblog.com/ggggqqqqihc/comments/43668.html</wfw:comment><comments>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ggggqqqqihc/comments/commentRss/43668.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ggggqqqqihc/services/trackbacks/43668.html</trackback:ping><description><![CDATA[刚才上完C++的课，课上一直在做布置的七道题。整节课手就没离开键盘，总算在下课前做完了。<br>有一道题可是相当让人郁闷。说是定义一个CPoint类描述一个点，再以CPoint为基类派生出CLine类，描述一个线段；再从CLine派生出CRect，描述一个矩形。<br>郁闷呐&#8230;&#8230;稍微有点儿面向对象常识的人都知道这不是继承派生的问题，而是对象组合的问题。难道老师非要让我认为&#8220;矩形是一种线段，线段属于点的一类&#8221;吗？<br>其实C++课的正式名称是&#8220;面向对象程序设计基础&#8221;。我怀疑照这种教法，学生们是否知道应该如何使用继承。一个讲授面向对象基础的课居然出这种题目，实在难以接受。<br><br><img src ="http://www.cppblog.com/ggggqqqqihc/aggbug/43668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ggggqqqqihc/" target="_blank">Wang Jinbo</a> 2008-03-04 12:31 <a href="http://www.cppblog.com/ggggqqqqihc/archive/2008/03/04/43668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GCC不能正确继承模板类？</title><link>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/02/43548.html</link><dc:creator>Wang Jinbo</dc:creator><author>Wang Jinbo</author><pubDate>Sat, 01 Mar 2008 23:10:00 GMT</pubDate><guid>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/02/43548.html</guid><wfw:comment>http://www.cppblog.com/ggggqqqqihc/comments/43548.html</wfw:comment><comments>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/02/43548.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/ggggqqqqihc/comments/commentRss/43548.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ggggqqqqihc/services/trackbacks/43548.html</trackback:ping><description><![CDATA[GCC编译器似乎不能理解继承自模板类里的数据成员。我还以为是代码的问题，郁闷了半天后，居然在Borland C++ 5.5下编译通过了。节省篇幅，我抽出主要部分。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">template</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;A{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">:&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;id;&nbsp;&nbsp;<br>};&nbsp;&nbsp;<br>template</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;<br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;B:&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;A</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setid(T&nbsp;i){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id</span><span style="color: #000000;">=</span><span style="color: #000000;">i;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;test1(){&nbsp;&nbsp;<br>&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;">"</span><span style="color: #000000;">B::test1()&nbsp;ID:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">id</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">endl;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;<br>};</span></div>
B类的id本应该是从A类里继承来的，但用GCC编译会提示说变量id未定义。试着用Borland的编译器就很痛快地过了。我使用的是MinGW的
GCC 3.4，但我在Unix-Center的机器上使用Unix和Linux版本的GCC 4.0编译仍然通不过，但Solaris上的Sun
Studio的C++编译器则没问题。
<br>难道就这么幸运地碰上GCC的Bug了？ <img src ="http://www.cppblog.com/ggggqqqqihc/aggbug/43548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ggggqqqqihc/" target="_blank">Wang Jinbo</a> 2008-03-02 07:10 <a href="http://www.cppblog.com/ggggqqqqihc/archive/2008/03/02/43548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单件模式的实现</title><link>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/01/43532.html</link><dc:creator>Wang Jinbo</dc:creator><author>Wang Jinbo</author><pubDate>Sat, 01 Mar 2008 14:01:00 GMT</pubDate><guid>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/01/43532.html</guid><wfw:comment>http://www.cppblog.com/ggggqqqqihc/comments/43532.html</wfw:comment><comments>http://www.cppblog.com/ggggqqqqihc/archive/2008/03/01/43532.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/ggggqqqqihc/comments/commentRss/43532.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ggggqqqqihc/services/trackbacks/43532.html</trackback:ping><description><![CDATA[对于某些用途的类，必须确保在程序运行过程中最多只有一个实例。单件模式很适合这种场合。<br>单件模式实现的技巧是将构造函数私有化，这样就禁止了直接定义对象变量和用new生成对象。但将构造函数设为私有的话，又如何去生成那个唯一的对象呢？废话少说，先贴代码。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Singleton{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Singleton(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> more code</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Singleton&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">thisInstance;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> more code</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;Singleton&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"> more code</span><span style="color: #008000;"><br></span><span style="color: #000000;">};<br>Singleton&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">Singleton::thisInstance</span><span style="color: #000000;">=</span><span style="color: #000000;">NULL;<br>Singleton&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">Singleton::getInstance(){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(thisInstance</span><span style="color: #000000;">==</span><span style="color: #000000;">NULL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisInstance</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Singleton();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;thisInstance;<br>}</span></div>
<br>如此一来，要取得Singleton的实例，只能用getInstance函数。getInstance函数必须是静态（Static）的，这样才能在还没有实例的时候使用这个函数。而getInstance又是Singleton类里的函数，当然是可以在其中使用new来生成对象了。所以说虽然将类的构造函数私有化了，但构造函数本身还是有意义的，它会在构建第一个，也是唯一一个实例的时候执行。同时，保证了不会出现多于一个的实例。<br>     <img src ="http://www.cppblog.com/ggggqqqqihc/aggbug/43532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ggggqqqqihc/" target="_blank">Wang Jinbo</a> 2008-03-01 22:01 <a href="http://www.cppblog.com/ggggqqqqihc/archive/2008/03/01/43532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一道Google面试题的解答</title><link>http://www.cppblog.com/ggggqqqqihc/archive/2008/02/17/42826.html</link><dc:creator>Wang Jinbo</dc:creator><author>Wang Jinbo</author><pubDate>Sun, 17 Feb 2008 03:23:00 GMT</pubDate><guid>http://www.cppblog.com/ggggqqqqihc/archive/2008/02/17/42826.html</guid><wfw:comment>http://www.cppblog.com/ggggqqqqihc/comments/42826.html</wfw:comment><comments>http://www.cppblog.com/ggggqqqqihc/archive/2008/02/17/42826.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/ggggqqqqihc/comments/commentRss/42826.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ggggqqqqihc/services/trackbacks/42826.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目：对现在的Stack（栈）数据结构进行改进，加一个min()功能，使之能在常数，即O(1)时间内给出栈中的最小值。可对push()和pop()函数进行修改，但要求其时间复杂度都只能是O(1)。&nbsp;&nbsp;<a href='http://www.cppblog.com/ggggqqqqihc/archive/2008/02/17/42826.html'>阅读全文</a><img src ="http://www.cppblog.com/ggggqqqqihc/aggbug/42826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ggggqqqqihc/" target="_blank">Wang Jinbo</a> 2008-02-17 11:23 <a href="http://www.cppblog.com/ggggqqqqihc/archive/2008/02/17/42826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>