Time of Update: 2017-01-18
有很多地方需要這樣的功能模組,如系統的日誌輸出,GUI應用必須是單滑鼠,MODEM的聯結需要一條且只需要一條電話線,作業系統只能有一個視窗管理器,一台PC連一個鍵盤。 單例模式有許多種實現方法,在C++中,甚至可以直接用一個全域變數做到這一點,但這樣的代碼顯的很不優雅。
Time of Update: 2017-01-18
複製代碼 代碼如下:// hello.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdio.h"int _tmain(int argc, _TCHAR* argv[]){ FILE *file1,*file2; file1=fopen("047facesmall.obj","r");
Time of Update: 2017-01-18
通過觀察發現矩陣的下標有這樣一個規律:a行遞增後b列遞增然後c行遞減再d列遞減,但是對應值卻是逐漸增加的。因此可用4個迴圈實現,需要注意的是在賦值時不要把之前的值覆蓋了。所以在這裡選擇相同顔色部分賦值,代碼如下:複製代碼 代碼如下:#include <iostream>#include <iomanip>using namespace std;// 輸出螺旋矩陣void Matrix(){ const int size = 10; //
Time of Update: 2017-01-18
可變參數的實現要解決三個問題:1.如何調用帶有可變參數的函數2.如何編譯有可變參數的程式3.在帶有可變參數的函數體中如何持有可變參數第一個問題, 調用時在可以傳入可變參數的地方傳入可變參數即可,當然,還有一些需要注意的地方,後面會提到。第二個問題,編譯器需要在編譯時間採用一種寬鬆的檢查方案,,這會帶來一些問題, 比如對編程查錯不利。第三個是我在這裡要關心的問題,先以C語言為例分析其實現原理。printf和scanf是C語言標準庫中最常見的可變參數函數, printf的簽名是複製代碼
Time of Update: 2017-01-18
c++中.dll與.lib檔案的產生與使用的詳解--------------------------------------------------------------------------------兩種庫:• 包含了函數所在的DLL檔案和檔案中函數位置的資訊(入口),代碼由運行時載入在進程空間中的DLL提供,稱為動態連結程式庫dynamic link library。• 包含函數代碼本身,在編譯時間直接將代碼加入程式當中,稱為靜態連結庫static
Time of Update: 2017-01-18
排序演算法經過了很長時間的演變,產生了很多種不同的方法。對於初學者來說,對它們進行整理便於理解記憶顯得很重要。每種演算法都有它特定的使用場合,很難通用。因此,我們很有必要對所有常見的排序演算法進行歸納。我不喜歡死記硬背,我更偏向於弄清來龍去脈,理解性地記憶。比如下面這張時間複雜度圖,我們將圍繞這張圖來分析。上面的這張圖來自一個PPT。它概括了資料結構中的所有常見的排序演算法,給大家總結如下。區分穩定與不穩定:快速、希爾、堆、選擇不穩定,其他排序演算法均穩定。平均時間複雜度:冒泡,選擇,插入是O(
Time of Update: 2017-01-18
資料類型轉換就是將資料(變數、運算式的結果)從一種類型轉換到另一種類型。例如,為了儲存小數你可以將int類型的變數轉換為double類型。資料類型轉換的一般格式為:(type_name) expressiontype_name為要轉換到的資料類型,expression為運算式。例如:(float) a; //把a轉換為實型(int)(x+y); //把x+y的結果轉換為整型(float) 100; //將一個常量轉換為實型【樣本】將整數轉換為浮點數:#include
Time of Update: 2017-01-18
首先給大家一個簡單的例子,讓讀者有個整體的認識,代碼如下:#include <stdio.h>int main(){ puts("雲棲社區"); return 0;}函數的概念先來看第4行代碼,這行代碼會在顯示器上輸出“雲棲社區”。前面我們已經講過,puts 後面要帶( ),字串也要放在( )中。在C語言中,有的語句使用時不能帶括弧,有的語句必須帶括弧。帶括弧的稱為函數(Function)
Time of Update: 2017-01-18
二分査找也稱折半査找,其優點是尋找速度快,缺點是要求所要査找的資料必須是有序序列。該演算法的基本思想是將所要査找的序列的中間位置的資料與所要査找的元素進行比較,如果相等,則表示査找成功,否則將以該位置為基準將所要査找的序列分為左右兩部分。接下來根據所要査找序列的升降序規律及中間元素與所尋找元素的大小關係,來選擇所要査找元素可能存在的那部分序列,對其採用同樣的方法進行査找,直至能夠確定所要尋找的元素是否存在,具體的使用方法可通過下面的代碼具體瞭解。#include
Time of Update: 2017-01-18
插入排序是排序演算法的一種,它不改變原有的序列(數組),而是建立一個新的序列,在新序列上進行操作。這裡以從小到大排序為例進行講解。基本思想及舉例說明插入排序的基本思想是,將元素逐個添加到已經排序好的數組中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好的數組是仍然有序的。在實際使用中,通常是排序整個無序數組,所以把這個無序數組分為兩部分排序好的子數組和待插入的元素。第一輪時,將第一個元素作為排序好的子數組,插入第二個元素;第二輪,將前兩個元素作為排序好的數組,插入第三個元素。以此類推,第
Time of Update: 2017-01-18
快速排序是對冒泡法排序的一種改進。快速排序演算法 的基本思想是:將所要進行排序的數分為左右兩個部分,其中一部分的所有資料都比另外一 部分的資料小,然後將所分得的兩部分資料進行同樣的劃分,重複執行以上的劃分操作,直 到所有要進行排序的資料變為有序為止。可能僅根據基本思想對快速排序的認識並不深,接下來以對n個無序數列A[0], A[1]…,
Time of Update: 2017-01-18
區別C++中對於類來說,對於其中的成員,用點操作符.來獲得,而對於一個指向類對象的指標來說,則用箭頭操作符->調用該指標所指向對象的成員。當類定義->重載操作符後,則既可以用箭頭操作符,也可以用點操作符。重載->操作符重載箭頭操作符必須定義為類成員函數。沒有顯式形參(而且是類成員,唯一隱式形參是this)。->的右運算元不是運算式,而是對應類成員的一個標識符,由編譯器處理擷取成員工作。重載箭頭操作符必須返回指向類類型的指標,或者返回定義了自己的箭頭操作符的類類型對象。如果
Time of Update: 2017-01-18
Read函數定義通過read函數將檔案中的資料按照一定的長度讀取出來並且存放在新的數組中。用於從檔案中讀取資料。函數原型istream& read (char* s, streamsize n);參數char* s取出資料的流向的char類型數組指標,streamsize n表示數組的長度#include<iostream>using namespace std;int read()//read函數主體部分{ int x=0,f=1;char ch=getchar();
Time of Update: 2017-01-18
fgets() 有局限性,每次最多隻能從檔案中讀取一行內容,因為 fgets 遇到分行符號就結束讀取。如果希望讀取多行內容,需要使用 fread 函數;相應地寫入函數為 fwrite。fread() 函數用來從指定檔案中讀取塊資料。所謂塊資料,也就是若干個位元組的資料,可以是一個字元,可以是一個字串,可以是多行資料,並沒有什麼限制。fread() 的原型為:size_t fread ( void *ptr, size_t size, size_t count, FILE *fp
Time of Update: 2017-01-18
關於時間的類型:time_t long型,表示從1970年1月1日到現在經過的秒數。#include<time.h>struct tm { int tm_sec; /* 秒 – 取值區間為[0,59] */ int tm_min; /* 分 - 取值區間為[0,59] */ int tm_hour; /* 時 - 取值區間為[0,23] */ int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */
Time of Update: 2017-01-18
桶排序(Bucket sort)或所謂的箱排序,是一個排序演算法,工作的原理是將數組分到有限數量的桶子裡。每個桶子再個別排序(有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序)。桶排序是鴿巢排序的一種歸納結果。當要被排序的數組內的數值是均勻分配的時候,桶排序使用線性時間(Θ(n))。但桶排序並不是比較排序,他不受到O(n log n)下限的影響。桶排序以下列程式進行:1.設定一個定量的數組當作空桶子。2.尋訪序列,並且把項目一個一個放到對應的桶子去。3.對每個不是空的桶子進行排序。
Time of Update: 2017-01-18
基本思想:將待排資料中的每組關鍵字依次進行桶分配。具體樣本:278、109、063、930、589、184、505、269、008、083我們將每個數值的個位,十位,百位分成三個關鍵字: 278 -> k1(個位)=8,k2(十位)=7,k3=(百位)=2。然後從最低位個位開始(從最次關鍵字開始),對所有資料的k1關鍵字進行桶分配(因為,每個數字都是 0-9的,因此桶大小為10),再依次輸出桶中的資料得到下面的序列。930、063、083、184、505、278、008、109、589、2
Time of Update: 2017-01-18
數學庫函式宣告在 math.h 中,主要有:1、abs(x) 求整型數x 的絕對值2、cos(x) x(弧度)的餘弦3、fabs(x) 求浮點數x 的絕對值4、ceil(x) 求不小於x 的最小整數5、floor(x) 求不大於x 的最小整數6、log(x) 求x 的自然對數7、log10(x) 求x 的對數(底為10)8、pow(x, y) 求x 的y 次方函數說明:pow()用來計算以x為底的y次方值,即xy值,然後將結果返回。傳回值:返回x的y次方計算結果。9、sin(x)
Time of Update: 2017-01-18
1.大端模式,是指資料的低位儲存在記憶體的高地址中,而資料的高位,儲存在記憶體的低地址中;小端模式相反 2.為什麼有大小端之分??? 因為在電腦系統中,儲存是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組=8bit。在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器)。對於位元大於8位的處理器,例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,如何安排多個位元組的儲存,這就有了大端儲存模式和小端
Time of Update: 2017-01-18
1. 用Microsoft Visual C++ 6.0編譯的程式,或者發布在Windows 2000/NT/ME/98 系統單純通過拷貝MSVCRxx.DLL檔案到應用程式目錄或system32目錄即可2. 用Visual Studio 2005以上編譯的程式,且發布在Windows XP及以上系統為了減少DLL引發的配置問題(DLL hell),C和C++運行時由並行 (Side-by-Side)