原创 函數的值傳遞和引用傳遞

  函數在每次調用時都會重新創建它的形參,並用傳入的實參進行初始化。形參初始化的機理與變量初始化一樣。   和其他變量一樣,形參的類型決定了形參和實參交互的方式。如果形參是引用類型,它將綁定到對應的實參上;否則,將實參的值拷貝後

原创 類成員函數的重載、覆蓋和隱藏

成員函數被重載的特徵: (1)相同的範圍(在同一個類中); (2)函數名字相同; (3)參數不同; (4)virtual 關鍵字可有可無。 覆蓋是指派生類函數覆蓋基類函數,特徵是: (1)不同的範圍(分別位於派生類與基

原创 指針和對象存取數據成員有什麼區別?

  如果我們有兩個定義: Point3d origin,*pt = &origin;   用它們來存取data member,像這樣: origin.x = 0.0; pt->x = 0.0   通過origin存取,和通過pt存

原创 Implement Trie (Prefix Tree)

題目名稱 208. Implement Trie (Prefix Tree) 描述 Implement a trie with insert, search, and startsWith methods. Note: Yo

原创 選擇排序

  選擇排序的基本方法是:每步從帶排序的元素中選出關鍵詞最小(或最大)的元素,順序放在已排序的元素的最後,直到全部排序完爲止。這裏介紹簡單選擇排序和堆排序。 簡單選擇排序 1.算法思想   每次從無序區中挑選出一個最小的值,將其

原创 Named Return Value Optimization

  已知下列函數定義: X bar() { X xx; // process xx ... return xx; }   你可能會問bar()的返回值如何從局部對象xx中拷貝過來? 實現模型1 返回值的初始

原创 插入排序

  插入排序的思想是:每一趟將一個待排序的元素,按其關鍵字值的大小插入到已經排序的部分文件中的適當位置上,直到全部插入完成。這裏介紹三種插入排序方法:直接插入排序、折半插入排序和希爾排序。 直接插入排序 1.算法思想   直接插

原创 Range Sum Query - Immutable

題目名稱 303. Range Sum Query - Immutable 描述 Given an integer array nums, find the sum of the elements between indice

原创 用C++實現bitmap

位圖數據結構   該數據結構描述了一個有限定義域內的稠密集合,其中的每一個元素最多出現一次並且沒有其他任何數據與該元素相關聯。即使這些條件沒有完全滿足(例如,存在重複元素或額外的數據),也可以用有限定義域內的鍵作爲一個表項更復雜的

原创 歸併排序

1.算法思想   首先,將R[0…n-1]看成是n個長度爲1的有序表,將相鄰的有序表成對歸併,得到n/2個長度爲2的有序表;然後,再將這些有序表成對歸併,得到4/n個長度爲4的有序表,如此反覆進行下去,最後得到一個長度爲n的有序

原创 構造函數成員初始值列表(member initialization list)

爲什麼對象使用前需要初始化 1.讀取未初始化的值會導致不明確的行爲   在某些平臺上,僅僅是讀取未初始化的值,就可能讓你的程序終止運行。更可能的情況是讀入一些“半隨機”bits,污染了正在進行讀取動作的那個對象,最終導致不可預知

原创 Mac編譯C++代碼

今天偶然才知道原來Xcode能夠編譯C++代碼,這一個多月來我都是用g++ -o 來編譯運行調試的啊,我的天~~ 點贊 收藏 分享

原创 關於排序算法

  排序算法一直是面試和算法學習的基礎和重點,一直想找個時間總結一下,今天就開始吧,對於常見的排序算法一定要做到以下幾點: 1. 一提到某個排序算法,要立馬說出算法的思想和排序過程; 2. 一提到某個排序算法一定要立馬能在紙上

原创 UDP的首部格式

  用戶數據報UDP有兩個字段:數據字段和首部字段。首部字段很簡單,只有8個字節,由4個字段組成,每個字段的長度都是兩個字節,如下如所示。各字段意義如下: 1. 源端口:源端口號。在需要對方回信時選用,不需要時可用全0. 2.

原创 淺談C++內聯函數

  將函數指定爲內聯函數(inline),通常就是將它在每個調用點上“內聯地”展開。。假設我們把shorterString函數定義成內聯函數,則如下調用: cout<<shorterString(s1,s2)<<endl; 將在編