原创 斐波那契數列和二分查找的算法(遞歸與非遞歸)

#include <iostream> using namespace std; long long fibonacci1(size_t n)//非遞歸算法 {long long* fiboarry = new long long[n +

原创 非遞歸實現二叉樹的遍歷

1、先序遍歷 基本思想: 1>首先定義一個棧,每遇到一個節點,就對其數據進行訪問;然後將其入棧,將當前節點的左孩子賦給它,循環此過程,直到最左節點被訪問並被壓入棧中。 2>出循環後用臨時變量保存棧頂節點,然後對棧頂節點進行出棧操作

原创 拷貝構造函數相關知識總結

在C++中,下面三種對象需要調用拷貝構造函數! 1. 對象以值傳遞的方式傳入函數參數 [c-sharp] view plain copy class CExample    {   private:    int a

原创 C++模板template用法總結

引言 模板(Template)指C++程序設計設計語言中採用類型作爲參數的程序設計,支持通用程序設計。C++ 的標準庫提供許多有用的函數大多結合了模板的觀念,如STL以及IO Stream。 函數模板 在c++入門中,很多人會接觸

原创 編寫函數: unsigned int reverse_bit(unsigned int value); 這個函數的返回 值value的二進制位模式從左到右翻轉後的值。

//如: //在32位機器上25這個值包含下列各位: //00000000000000000000000000011001 //翻轉後:(2550136832) //100110000000000000000000000 #incl

原创 “error LNK1169: 找到一個或多個多重定義的符號”的解決方法(轉載)

問題描述如下: 有 三個源文件,A.h、B.cpp、C.cpp。 A.h是頭文件,其中聲明瞭三個變量a1、a2、 a3。 B.cpp是A.h中所聲明的類的實現源代碼,C.cpp是主程序文件。B.cpp和C.cpp中均包含頭文件 A

原创 “error LNK1169: 找到一個或多個多重定義的符號”的解決方法(轉載)

“error LNK1169: 找到一個或多個多重定義的符號”的解決方法(轉載) 問題描述如下: 有 三個源文件,A.h、B.cpp、C.cpp。 A.h是頭文件,其中聲明瞭三個變量a1、a2、 a3。 B.cpp是A.h中所聲

原创 棧和隊列的區別

簡單的可以理解爲:  heap:是由malloc之類函數分配的空間所在地。地址是由低向高增長的。  stack:是自動分配變量,以及函數調用的時候所使用的一些空間。地址是由高向低減少的。  預備知識—程序的內存分配  一個由c/C++

原创 兩個int數m和n的二進制表達式中有多少位不同?

#intclude <stdio.h>  int diff_count(int m,int n) {  int i=0;  int count=0;  for(i=0;i<32,i++) {  if(((m>>i)&1) != ((n>>

原创 STL 關聯式容器 Set與Map的用法

C++的標準模板庫(簡稱STL)是一個容器和算法的類庫。容器往往包含同一類型的數據。 set是一種關聯式容器,其特性如下: set以RBTree作爲底層容器所得元素的只有key沒有value,value就是key不允許出現鍵值重複所

原创 const的用法

在普通的非 const成員函數中,this的類型是一個指向類類型的 const指針。可以改變this所指向的值,但不能改變 this所保存的地址。 在 const成員函數中,this的類型是一個指向 const類類型對象的 const

原创 VS下如何調試程序

程序崩潰的原因分類函數棧溢出 一個變量未初化、未賦值,就讀取它的值。 ( 這屬於邏輯問題,往往是粗心大意的導致的 )函數棧溢出 (1)定義了一個體積太大的局部變量 (2)函數嵌套調用,層次過深(如無窮遞歸)數組越界訪問 訪問數組元素時,下

原创 debug和release的區別

Debug 和 Release 並沒有本質的區別,他們只是VC預定義提供的兩組編譯選項的集合,編譯器只是按照預定的選項行動。如果我們願意,我們完全可以把Debug和Release的行爲完全顛倒過來。當然也可以提供其他的模式,例如自己定義一

原创 C++ 堆和棧的區別 內存分配方式理解

棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變量的存儲區。裏面的變量通常是局部變量、函數參數等。在一個進程中,位於用戶虛擬地址空間頂部的是用戶棧,編譯器用它來實現函數的調用。和堆一樣,用戶棧在程序執行期間可以動態地擴展

原创 Linux 中的信號

1、基本概念  軟中斷信號(signal,又簡稱爲信號)用來通知進程發生了異步事件。進程之間可以互相通過系統調用kill發送軟中斷信號。內核也可以因爲內部事件而給進程發送信號,通知進程發生了某個事件。注意,信號只是用來通知某進程發生了什麼