微軟100題(55)類的賦值函式

2021-07-03 01:09:27 字數 365 閱讀 8817

題目:類cmystring的宣告如下:

class cmystring ;

請實現其賦值運算子的過載函式,要求異常安全,即當對乙個物件進行賦值時發生異常,物件的狀態不能改變

cmystring& operator = (const cmystring& str)

return *this;

}

通過構造乙個臨時例項strtemp,接著講strtemp中的m_pdata和自身的

m_pdata交換,當離開if作用域時候,strtemp自動呼叫析構函式釋放其記憶體,而且他指向的記憶體就是例項之前指向的記憶體。

這樣,如果在構造裡面有異常,原來例項的狀態沒有改變

微軟100題(2) min函式棧

2.設計包含min 函式的棧。定義棧的資料結構,要求新增乙個min 函式,能夠得到棧的最小元素。要求函式min push 以及pop 的時間複雜度都是o 1 要能在o 1 時間拿到min值,則棧中每個位置都應該有關於最小值的資訊,否則無法直接獲得最小值 所以,有兩種思路,一是棧中每個值為乙個結點,節...

微軟100題(48)迴圈陣列的查詢

題目 乙個陣列是由乙個遞減數列左移若干位形成的,比如 是由左移兩位形成的,在這種陣列中查詢某乙個數。思路 對於排序陣列查詢,最快用二分查詢,但是此陣列已經移動了一些位數 以中間為劃分,需要判斷左邊是單調遞減的還是右邊是單調遞減 int findnuminleftshiftarray vector d...

微軟100題 求陣列中的逆序對

求陣列中的逆序對的個數 在陣列a中如果a i a j 且i稱為乙個逆序數對,例如陣列是7,5 6 4 則逆序對共有 7,5 7,6 7,4 5,4 6,4 五個逆序對,剛開始的時候沒有思路,看了看解答之後發現,還是採用分治的思想,類似於用歸併演算法實現,空間複雜度為n,需要乙個額外的陣列來儲存,時間...