知識點總結

2021-08-03 12:29:56 字數 2407 閱讀 2630

1.二叉樹線索化

2.哈夫曼樹

3.雜湊衝突解決方法:

1.開放位址法 2.線性探測法 3.鏈位址法(拉鍊法) 4.二次探測法

5.偽隨機探測法 6.再雜湊(雙重雜湊,多重雜湊) 7.建立乙個公共溢位區

單旋轉法是建立雜湊函式的一種方法, ,將最後一位數,旋轉放置到第一位

常見的雜湊函式有,直接定址法,數字分析法,平法取中法,取餘法,摺疊法,隨機法

4.struct 和class的區別:

預設的訪問許可權不一樣,struct預設是public,class預設是private.

5.在c++進行函式返回時候,不要返回指向區域性變數或者臨時物件的引用,函式執行完畢後,區域性變數和臨時物件將會消失,引用將指向不存在的資料。

6.不能過載的運算子有:.(成員訪問運算子),.* (成員指標訪問運算子),::  (域運算子),sizeof (長度運算子)?: (條件運算子)。

7.友元:友元函式,友元類,友元成員函式。

友元函式:建立友元函式的第一步是將其原型放在類的宣告中,並在原型的前面加上關鍵字friend。

8:關鍵字explicit禁止隱式轉換。

9:單例模式:

class csingleton  

private:

csingleton()

static csingleton * m_pinstance;

};

10:陣列作為引數傳遞的時候,退化為指標。

11.vector:

怎麼避免vecto頻繁分配記憶體?

vector每次進行重新分配記憶體的時候,類似realloc,包含以下四個方面:

(1)分配新的記憶體塊,它有容器目前容量的倍數。在大部分實現中,vector和string的容量每次以2為因數增長。也就是說,當容器必須擴充套件時,它們的容量每次翻倍。

(2)把所有元素從容器的舊記憶體拷貝到它的新記憶體。

(3)銷毀舊記憶體中的物件。(4)**舊記憶體。

所以每次進行重新分配記憶體的時候,會耗費大量的時間,所以,我們需要盡量的避免記憶體的頻繁重新分配。呼叫reserve函式;

vectorv; 

v.reserve(1000);

for (int i = 1; i <= 1000; ++i)

v.push_back(i);

通常有兩情況使用reserve來避免不必要的重新分配。

第乙個可用的情況是當你確切或者大約知道有多少元素將最後出現在容器中。那樣的話,就像上面的vector**,你只是提前reserve適當數量的空間。

第二種情況是保留你可能需要的最大的空間,然後,一旦你新增完全部資料,修整掉任何多餘的容量。

如何釋放vector的記憶體??

在effective c++17中指出:當vector、string大量插入資料後,即使刪除了大量資料(或者全部都刪除,即clear) 並沒有改變容器的容量(capacity),所以仍然會占用著記憶體。 為了避免這種情況,我們應該想辦法改變容器的容量使之盡可能小的符合當前 資料所需(shrink to fit).

即先建立乙個臨時拷貝與原先的vector一致,值得注意的是,此時的拷貝 其容量是盡可能小的符合所需資料的。緊接著將該拷貝與原先的vector v進行 交換。好了此時,執行交換後,臨時變數會被銷毀,記憶體得到釋放。此時的v即為原先 的臨時拷貝,而交換後的臨時拷貝則為容量非常大的vector(不過已經被銷毀)

**如下:

vectorv; 

//.... 這裡新增許多元素給v

//.... 這裡刪除v中的許多元素

vector(v).swap(v);

//此時v的容量已經盡可能的符合其當前包含的元素數量

//對於string則可能像下面這樣

string(s).swap(s);

例如:

#include#include#include#includeusing namespace std;

int main()

{ int x=10;

int y=20;

swap(x,y);

vectorfirst(4,x);

vectorsecond(6,y);

swap(first,second);

cout<<"first size"myvector.erase(myvector.begin(),myvector.begin()+9000);

cout<<"myvector size is:"<(myvector).swap(myvector);

cout<<"after swap:size is "<

知識點總結

1,迴圈中的中斷 continue 跳出此次迴圈,繼續for迴圈 break 跳出當前for迴圈 return 跳出當前方法 2,字串的操作 componentseparatedbystring stringbyreplacingoccurencesofstring withstring iskin...

知識點總結

oncreate onstrat onresume onpause onstop onrestart ondestroy standard 啟動activity都會產生乙個新的activity 預設模式 singletop 啟動activity允許多個,但不允許重疊 singletask 只允許有乙...

知識點總結

function go go 呼叫 go為變數名 setinterval go,1000 1000ms clearinterval 關閉定時器 function abc a,b 2,3 5undefined 未定義 null 空 nan 非數值 string 字串 var a 123 數字型別 va...