劍指 offer set 27 賦值運算子函式

2021-09-08 03:44:47 字數 525 閱讀 4707

要求為類 cmystring 定義賦值運算子函式. 

類的定義如下

class cmystring ;

在定義乙個賦值運算子時, 需要考慮如下幾點

1. 需要把返回值得型別宣告定義為該型別的引用, 並且在函式結束前返回例項自身的引用 (*this). 只有返回引用才可以連續賦值

2. 需要把傳入引數的型別宣告為常量引用. 形參必須是引用, 否則會編譯報錯

3. 需要判斷引入的例項是否是當前例項, 如果是同乙個那麼不進行賦值, 直接返回. 如果不事先判斷就直接賦值, 那麼在釋放例項記憶體時就會出現嚴重的問題. 若傳入例項釋放了自己的記憶體, 並且 傳入例項就是當前例項, 那麼不僅沒完成賦值, 當前例項也不完整了

4. 異常安全性. 先建立再複製, **如下

cmystring& cmystring::operator=(const cmystring &str) 

return *this;

}

劍指 offer set 1 二維陣列中查詢

總結 1.二維陣列搜尋題遇到兩個了,乙個是 leetcode 上 search in 2d matrix.那道題比較簡單,因為下一行的所有元素大於上一行的.這道題對二維矩陣的要求比較松,起初我的想法是直接取中間,將矩陣分成 3 個子部分再分別處理,用主方法計算,時間複雜度是 log m n 級別的 ...

劍指offer 面試27題

面試27題 題目 二叉樹的映象 題 操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5解題 coding utf 8 class treenode def init self,x self.val x s...

劍指 offer set 3 旋轉陣列的最小數字

總結 1.沒有重複元素的旋轉陣列可用 logn 時間內求出結果.解法有兩個步驟,先是求出發生旋轉的點 以 array 0 為支點求得 然後用正常的二分查詢給出結果 2.有重複元素元素的旋轉陣列時間複雜度最差會是 o n 討論下複雜度上公升的原因 對於沒有重複的旋轉陣列 4 5 6 1 2 3 piv...