Time of Update: 2018-07-25
快速排序是分而治之法的一種排序方法,快速排序將n個元素分為三段。left段,right段和middle段,中間僅有一個元素。我叫做關索引值。左邊的元素都不大於中間段,右邊的元素都不小於中間段。因此可以對left與right段進行單獨的排序。 完整代碼實現如下: #include<iostream> using namespace std;void quickSort(int array[],int X,int Y) //X,Y分別是數組的起始下標{
Time of Update: 2018-07-25
內嵌彙編是微軟為了提高程式的直接操作硬體能力,以及實現大任務程式效率的提高,而嵌入在VC中的,他不依賴於彙編器對內嵌彙編代碼進行彙編,這些內嵌彙編代碼由C編譯器內部實現,可以使程式好像自陷到彙編狀態一樣。這意味著你如果在C/C++程式中使用了 inline asm進行 彙編 那麼 就註定無法跨平台的,對於沒有彙編基礎的同學是需要去學習下王爽的8086組譯工具設計。,因為有些時候C++程式員是不得不懂這些東西的
Time of Update: 2018-07-25
List容器對應普通資料結構中的鏈表。List容器支援快速隨機插入、刪除,但不支援快速隨機訪問元素;這與vector容器是不一樣的,vector容器不支援快速隨機插入、刪除,但支援快速隨 機訪問元素。 List容器的特性決定可以在不額外開闢儲存空間的基礎上實現插入排序,且時間複雜度為O(N^2),與數組實現快排的時間複雜度一樣。
Time of Update: 2018-07-25
第17章 用於大型程式的工具 1 大規模應用程式往往具有下列特殊要求: 更嚴格的正常運轉時間以及更健壯的錯誤偵測和錯誤處理。錯誤處理經常必須跨越獨立開發的多個子系統進行。 ----異常處理,錯誤偵測與處理分開 能夠用各種庫(可能包含獨立開發的庫)構造程式。
Time of Update: 2018-07-25
剛開始學習c++的人都會遇到這樣的問題: 定義一個類 class A,這個類裡面使用了類B的對象b,然後定義了一個類B,裡面也包含了一個類A的對象a,就成了這樣: 一編譯,就出現了一個互包含的問題了,這時就有人跳出來說,這個問題的解決辦法可以這樣,在a.h檔案中聲明類B,然後使用B的指標。 然後,問題就解決了。 但是,有人知道問題是為什麼就被解決的嗎,也就是說,加了個前置聲明為什麼就解決了這樣的問題。下面,讓我來探討一下這個前置聲明。 類的前置聲明是有許多的好處的。
Time of Update: 2018-07-25
說在前面的廢話 話說快一年沒寫過部落格了。。。 在建站之前就先用csdn寫吧 這次要說的東西也沒有啥,主要是想寫一次快排(學了這麼就快排都沒寫過你敢信 用法類似於stl裡面的sort,有兩個版本。 不知道為什麼寫了很長時間。。。這麼短的代碼 還是感覺數組版的好寫一點 學過快排的同學可以不用看下面這段了 快排的基本思想 1.選取一個基準 2.將比它”小”的放在它前面,比他“大”的放在後面(廣義的小和大) 3.遞迴處理前面那一段和後面那一段 實現步驟
Time of Update: 2018-07-25
與本地C++自己維護堆不同,C++/CLI中動態分配的記憶體是由CLR來維護的。當不需要堆時,CLR自動將其刪除回收,同時CLR還能自動地壓縮記憶體堆以避免產生不必要的記憶體片段。這種機制能夠避免記憶體泄露和記憶體片段,被稱為記憶體回收,而由CLR管理的這種堆被稱為CLR堆。它由操作符gcnew建立。
Time of Update: 2018-07-25
堆疊溢位 , 簡而言之, 就是堆棧滿了,還往裡面塞東西。 一、堆疊溢位 堆疊溢位的產生的原因主要有以下幾個方面 1.1 遞迴層級過深 由於過多的函數調用,導致呼叫堆疊無法容納這些調用的返回地址,一般在遞迴中產生。堆疊溢位很可能由無限遞迴(Infinite recursion)產生,但也可能僅僅是過多的堆棧層級。 如下一段代碼: void foo(){ int a; foo();}int main(){ foo(); return 0;}
Time of Update: 2018-07-25
當我們在用C++做底層驅動的時候,經常會遇到記憶體不足的警告,究其原因,往往是因為記憶體出現溢出,泄露或者越界等原因。那麼他們之間有什麼聯絡嗎。 記憶體溢出(out of memory) 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。 記憶體流失(memory leak) 是指程式在申請記憶體後,無法釋放已申請的記憶體空間,佔用有用記憶體。 註:記憶體流失最終會導致記憶體溢出
Time of Update: 2018-07-25
1.從字串中尋找字元: char *strchr(const char *s,int c); 說明:該函數從s所指字串中的第一個字元起順序尋找ASCII碼為c值的字元,若尋找成功則返回該字元的儲存地址,否則返回NULL(即數值0)。 當調用該函數時傳送給第二個形參c的實參,可以為整數,但通常是一個待尋找的字元。 例:strchr("abcd",'c') 則返回"cd"
Time of Update: 2018-07-25
5 實現
Time of Update: 2018-07-25
Effective C++ 改善程式與設計的55個具體做法 讓自己習慣C++ 條款01:視C++為一個語言聯邦 條款02:盡量以const,enum,inline替換#define 條款03:
Time of Update: 2018-07-25
條款32:確定你的pubilc繼承塑模出is-a關係 Make sure public inheritance models “is-a” – C++進行(OOP)物件導向編程,最重要的一個規則是:public
Time of Update: 2018-07-25
4 設計與聲明 • 軟體設計,是“令軟體做出你希望它做的事情”的步驟和做法,通常以頗為一般性的構想開始,最終演變成十足的細節,以允許特殊介面(interface)的開發,這些介面而後必須轉換為C++聲明式。 條款18:讓介面容易被正確使用,不易被誤用 Makeinterfaces easy to use correctly and
Time of Update: 2018-07-25
C++的struct可以當作class來用,他和C++中class的唯一的區別是,class中的成員預設是private,而struct的成員預設為public。 C中的struct只能是一些變數的集合體,可以封裝資料卻不可以隱藏資料,而且成員不可以是函數。 關於使用大括弧初始化 class和struct如果定義了建構函式的話,都不能用大括弧進行初始化
Time of Update: 2018-07-25
首先 需要有#include<iomanip>這個標頭檔,因為它是輸入輸出資料流的格式控制 其次例如 double sum=10; cout<<setiosflags(ios::fixed)<<setprecision(1)<<sum; 其中setiosflags(ios::fixed)不要寫錯
Time of Update: 2018-07-25
c++中如何保留2位小數呢。 cout<<setiosflags(ios::fixed)<<setprecision(2)<<變數<<endl; 上面的代碼是需要標頭檔#include<iomanip> 的。 setprecision函數是指設定輸出的精度,例如: float a=2017.666; cout<<setprecision(5)<<a;
Time of Update: 2018-07-25
#include <iostream>#include <iomanip>using namespace std;int main(){ cout<<setprecision(3)<<3.1415<<endl; return 0;}
Time of Update: 2018-07-25
static關鍵字是C, C++中都存在的關鍵字. 它主要有三種使用方式, 其中前兩種只指在C語言中使用, 第三種在C++中使用(C,C++中具體細微操作不盡相同,本文以C++為準). (1)局部靜態變數 (2)外部靜態變數/函數 (3)待用資料成員/成員函數 下面就這三種使用方式及注意事項分別說明 一、局部靜態變數 在C/C++中, 局部變數按照儲存形式可分為三種 auto, static, register
Time of Update: 2018-07-25
3 資源管理 所謂資源就是,一旦用了它,將來必須還給系統。C++程式中最常使用的資源就是動態分配記憶體(如果你分配記憶體卻從來不曾歸還它,會導致記憶體泄露),但記憶體只是你必須管理的眾多資源之一。 條款13:以對象管理資源 Use object to manage resources. •