原创 C++設計模式目錄和總結

        面向對象設計模式是指那些滿足“應對變化,提高複用”的模式。現代軟件設計的特徵是“需求的頻繁變化”。設計模式的要點是“尋找變化點,然後在變化點處應用設計模式,從而來更好的應對需求的變化”。設計模式不應該濫用、先入爲主,需要在

原创 C++設計模式——策略模式(strategy pattern)

一、原理講解 1.1意圖 定義算法簇,將這些算法封裝起來,之間可以相互替換。這樣的好處在於,使得算法可以獨立於使用它的客戶而變化。 1.2與模板方法區別 模板方法主要是繼承接口類,而策略模式主要是組合接口類,兩種方法核心區別在於,是繼承?

原创 求字符串中不重複的最長子串的長度(C++,leecode)

求一個字符串中不重複的最長子串時,最簡單的辦法就是暴力破解法,另一種是巧妙使用指針來求解。暴力破解法雖然簡單粗暴,但是效率太低,幾乎不實用;後一種巧妙用指針法效率較大,但是需要對指針有較深理解。本文用代碼實現的是指針法,暴力破解法有需要的

原创 單鏈表加法總結(C++,leecode,整形int)

本文主要總結鏈表加法代碼,全文分爲兩部分,爲思路講解和代碼實現。 1.1思路講解 鏈表的加法主要根據小學數學10進制進位方法來解。兩個鏈表數據相加,主要是每個節點對應的數據相加,當有進位標誌時,則在下一個節點把這個進位標誌加上,即sum=

原创 程序員必須掌握的核心算法(C++)

本文完全轉載如下博客地址,轉載目的僅僅只是交流學習,如果侵權,請聯繫我,我會及時刪除和處理! 轉載原文地址:https://blog.csdn.net/m0_37907797/article/details/102661778

原创 在一個數組中找出兩個數,這兩個數之和爲指定目標值,返回這兩個數下標(leecode)(c++)

本文主要總結在一個數組中取出兩個數,這兩個數滿足條件爲:兩數之和爲制定目標值target,並且函數返回這兩個數下表。 示例: 給定 nums = [5,6,7,8,9,10], target = 19 因爲 nums[4] + nums[

原创 C++設計模式——裝飾模式(decorator pattern)

一、原理講解 圖1  裝飾者模式UML圖 1.1意圖 裝飾模式目的是:動態地給一個對象添加一些額外的職責,比生成子類更靈活。 1.2常用場景 一般用於給某個對象添加某個功能,但是又不希望更改該對象底層抽象藉口,同時該功能可以動態增刪,這

原创 C++設計模式——模板方法(template method)

一、原理講解 模板方法的核心定義一個算法的骨架,而將一些細節方法延遲到之類中實現。其中,算法骨架是不變的部分,細節方法是變化的部分。設計模式的核心思想就是將變化部分和不變部分有效隔離、耦合出來。該思路的實現重要利用c++多態特性,運行時刻

原创 兩數之和2:輸入有序數組(leecode)(c++)

在一個有序數組中,找出兩個數,使得兩數之和等於目標值。數組下標從1開始。 輸入: numbers = [5,6,7,8,9,10], target = 11 輸出: [1,2] 解釋: 5 與 6 之和等於目標值 11 。因此 index

原创 C++求字符串所有子串並順序輸出string::substr()

在Leecode做算法題時,經常遇到一些字符串的題目,這些題目有不少是有一種通用解法,也就是暴力解法。用窮舉法列出所有可能的結果,然後根據附加條件進一步篩選符合條件的解。本文主要總結的是求出一個字符串中,所有子串,子串是穩定的,也就是說,

原创 鏈表數據結構的創建和調用(C++)

在數據結構與算法中,鏈表是一個稍微有些難以理解的數據結構。本文主要總結鏈表的基本編程用法,通過創建一個鏈表和調用鏈表每個節點的數據代碼,展示基本的鏈表數據結構用法。 1.1原理講解 鏈表是在物理上可以是非連續的存儲空間,由一片片存儲區域組

原创 刪除字符串中第一個重複的 指定字符的左邊所有字符 函數總結

本文主要總結一個刪除字符串中第一個重複的指定字符的左邊所有字符函數,簡單來說,就是比如字符串“abcbefg”,比如我要刪除第一個重複字符'b'左邊所有字符,也就是要刪除字符串“abcbefg”中的字符“ab”,剩下的字符是“cbefg”

原创 自定義按鈕,鼠標移入、移出、摁下,分別改變按鈕圖標樣式原理和代碼總結(上圖標下文字、hover、QSS樣式表、QPushbutton)

本文主要總結一個自定義按鈕,該按鈕樣式效果類似樣式表的鼠標懸停(移入)、鼠標移出、鼠標摁下效果。當鼠標分別懸停(移入)、移出、摁下時,其內的圖像子控件分別變爲對應的圖片。下面分別對實現效果進行原理講解和代碼示例。 一、原理講解 自定義控件

原创 用Qt實現QQ好友列表界面伸縮功能(完全一模一樣)(伸展和收縮、抽屜效果、類似樹形控件)(鼠標劃過QSS效果)

本文主要總結用Qt的自定義按鈕和QWidget界面實現QQ好友列表的界面伸展和收縮功能,以及鼠標滑過、鼠標單擊的QSS樣式表效果。全文分爲兩大部分,分別是原理講解和效果實現。 抽縮界面效果圖   源代碼下載地址:https://down

原创 Qt動態增加和動態刪除QWidget內控件(有佈局和沒有佈局都有效)(qDeleteAll、delete、deleteLater、findChildren)

在QWidget界面中,不管是否採用了佈局,只要是QWidget的子類,則可以用findchild()函數查找所有子類,然後通過指定函數進行刪除。下面是博主總結的兩種動態刪除dget內控件的方法。 一、通過函數qDeleteAll()刪除