原创 Observer 模式 觀察者模式

       //Subject.h    #include<list>  #include<string>  usingnamespace std;    typedef string State;  class Observer;

原创 C++空白基類最優化(EBO或EBCO)

對於C++中的一個空類    class X  {  };    事實上並不是空的,sizeof(X)並不等於0, 一般的結果是1。每個X的對象都有一個隱晦的1bytes,是被編譯器安插進去的一個char,這樣可以使得這個class

原创 STL空間配置器-第一級配置器

一、SGI STL配置器簡介   SGI STL的配置器與衆不同,它與標準規範不同。如果要在程序中明確使用SGI配置器,那麼應該這樣寫: vector<int,std::alloc> iv;     他的名字是alloc

原创 KMP算法

int *next = NULL;   void get_next(const char * p) {     assert(p != NULL);          int m =strlen(p);       next=

原创 c++虛繼承對象的內存佈局(修改版)

c++虛繼承對象的內存佈局(修改版)               網上關於c++對象佈局的文章挺多,而且《深度探索c++對象模型》(Inside TheC++ Object Model 侯捷譯)一書中也很詳細地介紹。如果你一點都不瞭解

原创 紅黑樹詳解

前言:          之所以要寫這篇文章,第一個目的是爲了各位朋友在查看我寫的源代碼之前有一個可以理解理論的文章因爲紅黑樹還是有點難的, 如果不想搞懂理論,而直接看代碼,那絕對是雲裏霧裏,不知所云。第二個目的是我覺得網上雖

原创 非C++內建型別A和B, 在哪幾種情況下B能隱式轉化爲A?

有四種方法: ?         第一種:classB: public A {…} B公有繼承A,可以是間接公有繼承,當把B的對象賦值給A,會發生隱式轉換。 (待求證,保護繼承、私有繼承、B是A的成員能否發生轉換?) ?        

原创 數組表示數的下一個比它大的最小的置換

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.  

原创 Iterator 模式

  //Aggregate.h   class Iterator;   typedefint Object;   class Interator;   class Aggregate {   public:         

原创 內核是如何管理內存的

內核是如何管理內存的?   原文標題:How The Kernel Manages Your Memory 原文地址:http://duartes.org/gustavo/blog/   [注:本人水平有限,只好挑一些國外高手的精彩文

原创 頁面緩存——內存與文件的那些事兒

原文標題:Page Cache, the Affair Between Memory and Files 原文地址:http://duartes.org/gustavo/blog/   [注:本人水平有限,只好挑一些國外高手的精彩文章翻譯

原创 剖析程序的內存佈局

原文標題:Anatomy of a Program in Memory 原文地址:http://duartes.org/gustavo/blog/   [注:本人水平有限,只好挑一些國外高手的精彩文章翻譯一下。一來自己複習,二來與大家分享

原创 三種工廠模式區別總結

工廠模式分爲三種:簡單工廠、工廠模式和抽象工廠模式。三者之間存在哪些異同呢?先分別看看各個模式的特點 一、     簡單工廠模式: 實現了算法和界面的分離,也就是將業務邏輯和界面邏輯分開了,降低了耦合度。 算法的封裝:  定義一個抽象

原创 不使用額外空間,將 A,B兩鏈表的元素交叉歸併

思想:先將pHead1拿出,pcurA指向phead1的下一個結點,再聲明一個 *pCurB;*pNextB;分別指向phead2的當前和下一個結點,每次連接,1不斷,2斷開。 typedef struct LinkNode{int d