C 使用中常見問題總結(二)

2021-09-27 23:33:26 字數 940 閱讀 3890

1、快速冪求解

假設要求a^b,按照一般的思路就是把a連乘b次,很顯然時間複雜度為o(n),而快速冪能卻能達到o(logn),其的原理如下:

假設要求a^b,其實b是可以用二進位制表示的,該二進位制數第i位的權為2^(i-1),例如當b=11時,11的二進位制為1011,即11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1,於是有a^11=a^(2^0+2^1+2^3),即可將a^11轉化為算 a^(2^0)*a^(2^1)*a^(2^3) ,總體來說快了很多,原來需算11次,而現在只需算3次。

對於處理二進位制數,一般很會想到用位運算這個強大的工具: &  和 >> ,&運算通常用於二進位製取位操作,例如乙個數 & 1 的結果就是取該二進位制的最末位,同時還可以判斷該數的奇偶 x&1==0 為偶,x&1==1為奇。>>運算為移位運算子,將二進位制的最後一位去掉。

具體**如下:

int quickpow(int a,int b)

return result;

}

2、簡述c++虛函式作用及底層實現原理

要點是要答出虛函式表和虛函式表指標的作用。c++中虛函式使用虛函式表和 虛函式表指標實現,虛函式表是乙個類的虛函式的位址表,用於索引類本身以及父類的虛函式的地 址,假如子類的虛函式重寫了父類的虛函式,則對應在虛函式表中會把對應的虛函式替換為子類的 虛函式的位址;虛函式表指標存在於每個物件中(通常出於效率考慮,會放在物件的開始位址處), 它指向物件所在類的虛函式表的位址;在多繼承環境下,會存在多個虛函式表指標,分別指向對應 不同基類的虛函式表。

3、c++的set與map的實現方式?以及map的find函式返回的型別?

set與map的底層實現是平衡二叉樹紅黑樹來實現的,unordered_map與unordered_set的底層實現是雜湊表;

map的find函式返回的型別迭代器型別;

日積月累,與君共進,增增小結,未完待續。 

Linux 中常見問題總結

一.怎樣設定 1 在network中設定 system setting network network proxy 如圖1所示,2 在瀏覽器例如firefox設定 選擇 use system proxy setting 如圖2 所示 3 在terminal視窗設定 ok。現在可以試著操作 sudo ...

Hive使用中常見問題總結(四)

尊敬的讀者您好 筆者很高興自己的文章能被閱讀,但原創與編輯均不易,所以 1 建立分割槽表 create table if not exists user family child predict result unionid string comment unionid predict value ...

C 常見問題總結(二)

把ini.配置檔案字串中的伺服器名改成伺服器的,把debug資料夾拷到其他機器上就行,伺服器上的伺服器名是預設的話,改成ip,不是預設的話,改成伺服器上的sql server伺服器名 把前面的 去掉。裝到d盤,c盤也會佔很多地方,其他系統也是這樣 insert inro表1 id,name sele...