原创 字符串反轉c語言遞歸、非遞歸

#include<iostream> #include<vector> #include<list> using namespace std; // 遞歸實現字符串反轉 /*******遞歸的方式寫字符串長度函數****

原创 MD5算法破解思路

https://blog.csdn.net/wufaliang003/article/details/79794982 小明:老師,上次您講了MD5算法。用它生成的信息摘要,真的可以被破解嗎? 老師:有很多種方法可以破解,不過需要

原创 C++ STL --- map

1、map簡介 map,顧名思義就是地圖。其實就是key,value的對應。 當你需要快速的獲取對應key的value的時候,就可以使用map了。例如一個人是有名字,但是這個人還有其他的屬性,例如年齡,性別等等。這個人就會被封裝爲

原创 括號匹配問題

括號匹配問題,用到了棧 #include <iostream> #include <stack> #include <string> using namespace std; int main() { string str;

原创 C++ 智能指針

使用智能指針的緣由 考慮下邊的簡單代碼: int main() { int *ptr = new int(0); return 0; }   就如上邊程序,我們有可能一不小心就忘了釋放掉已不再使用的內存,從而導致資源泄漏(r

原创 數據結構---B樹總結

B樹總結 這裏的B樹,也就是英文中的B-Tree,一個 m 階的B樹滿足以下條件: 每個結點至多擁有m棵子樹; 根結點至少擁有兩顆子樹(存在子樹的情況下),根結點至少有一個關鍵字; 除了根結點以外,其餘每個分支結點至少擁有 m/2

原创 C++ STL 如何使用鍵盤讀取一行已知個數的數字並存入vector中

最近做了一些筆試題,發現筆試題那個系統需要手動輸入數據,爲此寫了一篇博客。 #include<iostream> #include<vector> using namespace std; int main() {

原创 如何實現一個不可以被繼承的類

如何實現一個不可以被繼承的類 解題思路: 這個問題大家第一時間想到的答案是什麼樣子的呢,如果你牢固掌握了 C++繼承與多 態部分的內容,記住了基類和派生類的訪問權限,記住了派生類對象的構造過程,那麼你能 夠給出該問題的答案。 由於

原创 AVL、紅黑樹總結

AVL樹 BST樹在最差的情況下,和順序查找效率相當,退化成了線性結構,因爲BST樹的左右子樹高度差太大,如下 由此引出了AVL樹,AVL樹是帶有平衡條件的BST,這個平衡條件必須容易保持,且需要保持樹的深度O(logn), (

原创 fork與vfork的的區別

vfork用於創建一個新進程,而該新進程的目的是exec一個新進程,vfork和fork一樣都創建一個子進程,但是它並不將父進程的地址空間完全複製到子進程中,不會複製頁表。因爲子進程會立即調用exec,於是也就不會存放該地址空間。

原创 遞歸式 --- 二分查找

#include <vector> #include <iostream> #include <algorithm> using namespace std; int Search(vector<int>& v,int lef

原创 C++ --- 構造函數和析構函數能不能定義爲虛方法, 爲什麼??

A.面試常問問題之一:“析構函數能不能寫成虛函數”“析構函數什麼時候必須寫成虛函數”?大家肯定都知道答案了,來看看以下內容,再熟悉下,然後也理理思路,你雖然知道,但能不能有效的說出來,那還真不一定! “析構函數能不能寫成虛函數?”

原创 C++迭代器失效問題

C++中STL中vector、list容器,怎樣才能使迭代器失效 1、刪除操作會使迭代器失效 當我們刪除8這個元素的時候,我們會用到迭代器p1,而不會用到p2,這個時候8後面的元素會前移,對照上面兩個圖可知迭代器p2兩次訪

原创 排序算法-理論

1.直接插入排序:想象成給一個已經有序的數組中插入數據,所以只要從後往前找,找到比它小的數字 插入到它的後邊即可。先取第一個數字,一個數字肯定有序,再取第二個數字,從它的前一個開始找, 找到比它小的數字,插入到它的後面即可

原创 泛型算法---find與search的區別

Excel中的search函數和find函數都可以在指定的文本字符串中查找另一個文本字符串第一次出現的位置。其語法分別爲: search: search(find_text,within_text,[start_num]) fin