原创 Hash表理解

Hash表: 1、hash表就是通過hash函數將需要保存在hash表中的key值翻譯成hash bucket(也就是hash數組,是一個按照序列的數組)。然後查詢時候也是通過hash函數計算出bucket的index值,也就是計

原创 cgdb查看coredump文件,定位segment死在哪裏

1、首選需要設置系統支持在segment時候生辰coredump文件 #ulimit -c unlimited //表示生成的coredump文件大小不受限制。只要segment就生成core文件。 2、這樣程序segmentf

原创 使用類的成員函數作爲線程入口函數

使用類的成員函數作爲線程入口函數,同時共享數據也放在定義在類中的私有變量中。 1、在類定義時候正常定義成員函數 2、在啓動線程對象時候傳入入口函數時候,是使用的類::func的方式,然後參數傳入對象的引用。比如 Class A{

原创 判斷一個數是否爲N的冪

判斷一個數是否N的冪貌似用這個方法都可以搞定。就是讓這個數不停的除以N.同時判斷中間值x是否是N的倍數(也就是x%N==0).如果不是則這個數肯定不是N的冪,否則到最後一定是N的冪 bool isPowerOfN(int

原创 c++ new/delete的本質和衍生問題

1、首先new/delete不是函數,是運算符,類似+ - x /一樣的運算法,如果在代碼中使用Base *a=new Base();的話,則執行力三個步驟,一個步驟是調用函數全局函數::operater new(size);函數

原创 深拷貝和淺拷貝理解

所謂淺拷貝就是系統自帶默認的拷貝構造函數,類都有一個默認的拷貝構造函數,注意這裏是拷貝構造函數不是拷貝函數。之所以要強調構造是說這個功能只限於在構造階段使用,而不是其他賦值階段使用。淺拷貝有一個問題就是他只能拷貝類中定義的那些在棧

原创 動態規劃解決的問題思路分析

一般三類問題需要動態規劃來處理 1、最大最小值 2、計數型,比如從A-B有多少種走法?但是不會把每週走法都羅列出來,很多時候我們會把羅列的個數的的題也當成動態規劃,其實不是。 3、存在型,比如是否可以?是否能勝利等? 動態規劃的4

原创 函數返回值理解

一般我們這樣寫函數func,然後返回值是它裏面一個棧上的元素,如果main中我們也是可以正常得到c=200的,那麼a不是棧嘛,func返回不久沒有了嗎?他的值是怎麼賦值給c的呢?其實這裏有一箇中間變量(寄存器)會暫時存放a的內容,

原创 staict_cast reinterpret_cast const_cast dynamic_cast的用途和簡單區別理解

static_cast<>類型轉換 主要主要是針對類型之間的轉換,比如int->float,double->int,比如 double c = 1.0;int a = static_cast( c),可以用於類之間類型的轉換,但是

原创 爲什麼C/C++函數參數入棧順序是從右到左不是從左到右呢?

其實如果函數的參數固定的話,比如void func(int a, int b, int c)的入棧順序從右到左還是從左到右怎麼都行,只不過在調用不定個數參數的函數時使用從左到右壓站就麻煩了。比如printf(“%d-%d-%d\n

原创 二叉樹的深度優先遍歷和廣度優先遍歷理解

如上圖二叉樹的遍歷主要思想就是通過遞歸方式進行遍歷,同時如果要非遞歸遍歷的話,一般情況下,深度優先遍歷需要藉助stack保存中間變量的方式進行遍歷,廣度優先遍歷的話需要藉助queue來保存每一層變量的方式進行遍歷。 1、深度優先