Time of Update: 2018-12-03
排序(Sorting)是電腦程式設計中的一個重要而且常用的操作,它的功能是將一個資料元素的任意序列,重新排列成一個按關鍵字有序的序列。下面介紹最為常用的幾種排序演算法,並進行簡單地比較分析以及C語言常式。這些C常式都是筆者在學習和工作中慢慢積累起來的,應該說還是有些用處的。(劉愛貴 / Aiguille.LIU)1、快速排序演算法 快速排序是目前公認的最好排序演算法,是一種基於分治技術的重要排序演算法,演算法時間複雜度為O(nlog2n)。/* quicksort.c */#define
Time of Update: 2018-12-03
進程是作業系統結構的基礎;是一個正在執行的程式;電腦中正在啟動並執行程式執行個體;可以分配給處理器並由處理器執行的一個實體;由單一順序的執行顯示,一個目前狀態和一組相關的系統資源所描述的活動單元。對應用程式來說,進程就像一個大容器。在應用程式被運行後,就相當於將應用程式裝進容器裡了,你可以往容器裡加其他東西(如:應用程式在運行時所需的變數資料、需要引用的DLL檔案等),當應用程式被運行兩次時,容器裡的東西並不會被倒掉,系統會找一個新的進程容器來容納它。動態性:進程的實質是程式在多道程式系統中的一
Time of Update: 2018-12-03
1,不徹底的abstract即使是abstract class,也不能對實現的介面的某個成員視而不見,即下面這樣是不允許的:interface in_one{ void A();}abstract class base_one : in_one{
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 中介者模式,聽上去有一點陌生。但是,只要我給朋友們打個比方就明白了。早先自由戀愛沒有現在那麼普遍的時候,男女之間的相識還是需要通過媒婆之間才能相互認識。男孩對女方有什麼要求,可以通過媒婆向女方提出來;當然,女方有什麼要求也可以通過媒婆向男方提出來。所以,中介者模式在我看來,就是媒婆模式。typedef struct _Mediator{ People* man;
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 預設函數是C++的一個基本特色。預設函數定義比較簡單,也就是說,對於函數的某一個輸入參數或者幾個輸入參數,如果你沒有特定的數值的話,那我們就會用預設的資料進行代替。如果你在調用的過程中使用了自己的資料,那麼預設資料將被我們自己定義的資料覆蓋。下面就是一個預設函數的樣本:int add(int m, int n = 10){return m + n;} 如果調用呢,有什麼區別?2
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 在算術符重載裡面,“=”重載可能是最經常使用的一種。但是好多人就誤以為在函數中,凡是類出現“=”的地方,那就是調用算術符重載,其實不然。為什麼呢?我們可以看看下面的代碼。首先,我們定義一個基本類:class data{char* value;int number;public:explicit data(int num = 0){if(num){number = num;value =
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 const是C/C++語言中的關鍵字,但是如果用的好,可以極大地提高代碼的健壯性。一般來說const使用的地方還是蠻多的,但是主要還是下面幾個地方:(1)普通變數的保護;(2)地址空間的保護;(3)類初始變數的聲明和保護;(4)類變數在函數中的保護。const的保護主要來自於編譯器層面,和程式的運行沒有關係。 (1)普通變數的保護const int data = 10;const
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 對於程式設計員來說,makefile是我們繞不過去的一個坎。可能對於習慣Visual
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 編寫代碼過程中少不了調試。在windows下面,我們有visual studio工具。在linux下面呢,實際上除了gdb工具之外,你沒有別的選擇。那麼,怎麼用gdb進行調試呢?我們可以一步一步來試試看。#include <stdio.h>int iterate(int value){ if(1 == value) return 1; return
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 設計模式的書相信很多人都看過。對於設計模式這樣一種方法,相信不同的人有不同的理解。我在這裡寫的部落格只是我個人對設計模式的粗淺認識。文中肯定存在很多的不足和不成熟之處,希望朋友們諒解。望大家多多指正,謝謝!01)C語言和設計模式(繼承、封裝、多態)02)C語言和設計模式(訪問者模式)03)C語言和設計模式(狀態模式)04)C語言和設計模式(命令模式)05)C語言和設計模式(解譯器模式)0
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 在我們編寫軟體的過程當中,少不了需要使用別人的庫函數。因為大家知道,軟體是一個協作的工程。作為個人來講,你不可能一個人完成所有的工作。另外,網路上一些優秀的開源庫已經被業內廣泛接受,我們也沒有必要把時間浪費在這些重複的工作上面。
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 在Linux下面,編寫makefile是一件辛苦的事情。因此,為了減輕程式員編寫makefile的負擔,人們發明了autoconf和automake這兩個工具,可以很好地幫我們解決這個問題。 我們可以通過一個簡單的樣本來說明如何使用組態工具。(1)首先,編寫源檔案hello.c。#include <stdio.h>int main(int argc, char**
Time of Update: 2018-12-03
1、檔案拷貝///////////////////////////////////MFC版 檔案拷貝/////////////////////////////////void FileCopyTo(CString source, CString destination, CString searchStr, BOOL cover = TRUE){CString strSourcePath = source;CString strDesPath = destination;CString
Time of Update: 2018-12-03
1、有三種檔案IO流類:fstream、ifstream和ofstream,使用時要包含標頭檔:#include <fstream>;2、實際應用中,根據不同的需要選擇不同的IO流類。如果想以輸入方式開啟,就用ifstream來定義;如果想以輸出方式開啟,就用ofstream來定義;如果想以輸入輸出方式來開啟,就用fstream來定義;3、開啟檔案的第一種方式,通過建構函式。即在定義流對象時開啟檔案,這種模式在定義對象時需傳入檔案名稱和開啟模式,看一下三種檔案IO流類的建構函式定義:
Time of Update: 2018-12-03
公司的一個項目快完成了,最後要加上註冊驗證,翻了n多資料,終於做出來了。現在把體驗說一下,以後要用的時候也好找。~~.Net內建的類庫裡面有個演算法。 這個演算法的原理是不對稱式加密的原理。不對稱式加密原理大家基本上都瞭解。加密的密碼(密鑰)分為兩個部分,公開金鑰和私密金鑰。通過私密金鑰加密的密文只能通過公開金鑰解密。根據這個特性,我們可以發現只要開發人員儲存好私密金鑰,即使演算法代碼被用戶端破解,因用戶端不知道儲存在開發人員處的私密金鑰,也無法產生註冊碼。 以下是代碼:using
Time of Update: 2018-12-03
C++STL的非變易演算法(Non-mutating algorithms)是一組不破壞操作資料的模板函數,用來對序列資料進行逐個處理、元素尋找、子序列搜尋、統計和匹配。 search演算法函數在一個序列中搜尋與另一序列匹配的子序列。它有如下兩個原型,在迭代器區間[first1, last1)上找迭代器區間[first2, last2)完全符合(或者滿足二元謂詞binary_pred)子序列,返回子序列的首個元素在[first1,
Time of Update: 2018-12-03
15.3 代理模式應用執行個體 下面通過一個應用執行個體來進一步學習和理解代理模式。 1. 執行個體說明 某軟體公司承接了某資訊諮詢公司的收費商務資訊查詢系統的開發工作單位,該系統的基本需求如下: (1) 在進行商務資訊查詢之前使用者需要通過身分識別驗證,只有合法使用者才能夠使用該查詢系統; (2) 在進行商務資訊查詢時系統需要記錄查詢日誌,以便根據查詢次數收取查詢費用。
Time of Update: 2018-12-03
為了方便開發,想將資料庫表(視圖)轉換為實體類圖 如果用EA直接匯入資料庫表的話產生的不是類,還是表結構以及表之間的關聯關係(相當於E-R圖)。如: 將資料庫表(視圖)結構轉化為實體類,需要兩個步驟:(1) 將資料庫表(視圖)結構轉化為相應程式設計語言的代碼(此代碼可直接匯入項目使用,也可在EA產生類圖後進行注釋等詳細編輯後再匯出為代碼,再匯入項目使用)(2)
Time of Update: 2018-12-03
在看的二級C++的一本書中關於資料結構的內容列為了一章,介紹了比較新的概念。其中包括:線性表、棧、隊列、樹、二叉樹。 資料結構:是指相互之間存在一種或多種特定關係的的資料元素的集合。需要注意的是這裡的資料結構指的是邏輯結構,既關係,而非儲存結構。所謂的結構其實就是資料元素存在的前後關係,因此在實際儲存中各元素必須包括與前後元素的關係資訊。