原创 I/O複用之poll模型

poll系統調用和select的類似,也是利用輪詢文件描述符來尋找就緒者。 函數原型: int poll(struct pollfd *fds,nfds_t nfds,int timeout); fds參數是一個po

原创 單鏈表關於鏈表的算法

鏈表的排序 鏈表的按值刪除 尾刪 頭刪 如有錯誤,還請不吝賜教。

原创 求字符串的子序列是迴文串的動態規劃算法

給定一個字符串s,你可以從中刪除一些字符,使得剩下的串是一個迴文串。如何刪除才能使得迴文串最長呢? 輸出需要刪除的字符個數。 輸入描述: 輸入數據有多組,每組包含一個字符串s,且保證:1<=s.length<=1000.

原创 多態和虛函數的使用

上一篇博文我提到virtual用法,同時談到它在多態的實現中有至關重要的位置。現在我們來學習多態到底是什麼及其是如何實現的。 在C++中有兩種多態性: 1>編譯時的多態:通過函數的重載和運算符的重載來實現。 2>運行時的多態

原创 RBTree的插入算法

紅黑樹是具有這樣特性的一顆二叉搜索樹。 1>每個結點不是紅色就是黑色。 2>根結點是黑色。 3>如果結點爲紅色,其子結點必須爲黑色。 4>任以結點至NULL的任何路徑,所含黑結點數必須相同。 我的想法是這樣的:我們要插入

原创 Singleton模式

Singleton模式:即一個類只能實例化出一個對象。因此我們必須把構造函數設爲私有函數以禁止他人通過類名隨便創建實例。只能通過我們給定的方法創建。 下面我們給出最簡單的Singleton實現方法:

原创 拷貝構造和賦值語句

拷貝構造函數:用於對象初始化對象。函數名是類名。參數必須是對象的引用。 如果不採用引用傳遞會產生臨時變量,要開闢空間並且要拿原有的對象初始化臨時對象,繼續調用拷貝構造函數,產生無限遞歸,這些對象都存儲在棧裏面,造成棧溢出。

原创 考慮異常安全性的賦值語句

前邊寫過關於賦值語句的博客(http://blog.csdn.net/f15829107089/article/details/75453192), 但是實現的方法存在異常安全性。當我們賦值的對象原本有指向內存時,釋放內存後,重

原创 深淺拷貝

深淺拷貝問題的由來:在C++使用過程中我們會用到類,當我們用類定義一個對象,然後用類拷貝構造一個對象時,會調用拷貝構造函數。當然,如果我們的數據成員都是基本數據類型時我們不用擔心,但當我們的數據成員指向一定的內存空間,僅僅進行賦值

原创 多態原理實現分析及重載,隱藏,覆蓋的辨析

上一篇文章我講到關於多態的使用,我們是不是感到非常神奇,爲啥就是簡單的加個virtual就能訪問到子類的函數。無疑C++底層幫我們做很多的工作,C++的前輩們在底層加入__vfptr這樣一個虛函數表,用來存我們申明爲virtual

原创 字符串操作函數的使用及其實現

字符串操作函數包括strlen(),strcat(),strcpy(),strcmp()四個函數。 strlen()是求字符串的長度。 出於程序的安全性考慮,程序要進行判空操作。不然,在傳入空字符串時會發生崩潰。 這裏我

原创 繼承訪問屬性

我們都知道當實例化一個對象時我們的對象只能訪問類裏的公有數據或者函數。這樣看來保護屬性和私有屬性似乎沒有什麼區別。這就要引出我們的主角繼承。當我們的一個類D(子類)繼承另一個類Base(父類)時,我們有公有,保護,私有三種繼承方式

原创 迅雷2015筆試:hash_table

現在有一個用來存放整數的Hash表,Hash表的存儲單位稱爲桶,每個桶能放3個整數,當一個桶中要放的元素超過3個時,則要將新的元素存放在溢出桶中,每個溢出桶也能放3個元素,多個溢出桶使用鏈表串起來。此Hash表的基桶數目爲素數P,

原创 鑽石繼承和虛基類

當我們一個類去繼承的兩個父類有相同的數據成員時,我們想給這個成員賦值就要遇到問題了,我們必須用類名去驅動它,不然我們就不知道到底是給哪個成員賦值,下面舉個例子。 這樣看來是很好的解決我們的問題,但是當我們的父類繼承它自己的父

原创 AVL樹的插入算法

AVL樹是一顆空樹或者是左右子樹都是AVL樹,且左右子樹的高度之差絕對值不超過1,我們記爲bf。 我們可以有如下的結構定義: template class AVLNode { private: Typ