Time of Update: 2017-01-19
C++ STL標準模板庫在資料結構和演算法的實踐領域發揮著重要作用,極大的提高了開發效率。STL的三大組成部分為容器、迭代器、演算法,本文主要講解STL演算法中的非變易演算法。本文從實踐的角度簡單介紹了一下相關函數的使用。C++ STL的非變易演算法(Non-mutating algorithms)是一組不破壞函數資料的模板函數,用來對序列資料進行逐個處理、元素尋找、子序列搜尋、統計和匹配,基本上可用於各種容器。下面的敘述中迭代器區間預設為[first, last),迭代器具有“++”迭代和“*
Time of Update: 2017-01-19
問題:將兩個已排序數組合并成一個排序數組這裡先不考慮大資料量的情況(在資料量很大時不知大家有什麼好的思路或方法?),只做簡單數組的處理。簡單代碼如下:說明:之所以把merge函數定義成返回數組長度,是因為後續會有重複資料合併功能的merge版本,考慮到介面一致性。複製代碼 代碼如下:#include <stdio.h>#include <stdlib.h>#include <string.h>int merge(int* ar1, int len1, int*
Time of Update: 2017-01-19
實際上,很多C++運算子已經被重載。eg:將*運算子用於地址,將得到儲存在這個地址中的值,將他用於2個數字時,得到的將是他們的乘積。C++根據運算元的數目和類型來決定採用哪種操作。C++允許將運算子多載擴充到使用者定義的類型。例如,允許使用+將兩個對象相加。編譯器將根據運算元的數目和類型決定使用加法定義。運算子多載可以使代碼看起來更自然。例如,將2個數組相加是一種常見的運算。通常,需要使用下面這樣的for迴圈來實現:複製代碼 代碼如下:for (int i = 0; i < 20; i++
Time of Update: 2017-01-19
複製代碼 代碼如下:/*=============================================================================# FileName: explicit_try.cc# Desc: 驗證含有一個參數的非explicit建構函式是否可以拷貝初始化=======================
Time of Update: 2017-01-19
這是一個自己用c寫的不重複產生隨機數的代碼,且只有輸入q才能退出程式。複製代碼 代碼如下:#include <stdio.h>#include <stdlib.h>#include <time.h>#define MAX 100int main(void){ int i, j, flag, num, a[MAX] = { 0 }, max,
Time of Update: 2017-01-19
平台:linux依賴:g++ supports c++0x複製代碼 代碼如下:void func1(){ coroutine.yield();}void func2(Coro_t co1){ coroutine.resume(co1); coroutine.yield();}void func(){ Coro_t
Time of Update: 2017-01-19
複製代碼 代碼如下:#include <stdio.h>#include <stdlib.h>#include <conio.h>/*以下是為了構建線性鏈表而定義的結構體*/typedef struct chaink{ char c; struct chaink * next; }ck;ck * chain(ck *,int);int print(ck
Time of Update: 2017-01-19
字元讀寫函數 :fgetc和fputc字串讀寫函數:fgets和fputs資料區塊讀寫函數:freed和fwrite格式化讀寫函數:fscanf和fprinf1.字元讀寫:fgetc函數的功能是從指定的檔案中讀一個字元,函數調用的形式為:字元變數=fgetc(檔案指標);fputc函數的功能是把一個字元寫入指定的檔案中,函數調用的形式為:fputc(字元量,檔案指標); 2.字串讀寫讀字串函數fgets 函數的功能是從指定的檔案中讀一個字串到字元數組中,函數調用的形式為:
Time of Update: 2017-01-19
字元轉換為數字:#include<stdlib.h>atoi();將字元轉換為整型 例:char ch1;int i=atoi(ch1);atol();將字元轉化為長整型 例:char ch2;long l=atol(ch2);atof();將字元轉化為浮點型 例:char ch3;float f=atof(ch3);strtod(); 將字串轉化為雙精確度類型 例:string str1;double
Time of Update: 2017-01-19
在linux下開發,使用的是C語言。適用於需要定時的軟體開發,以系統真實的時間來計算,它送出SIGALRM訊號。每隔一秒定時一次c語言定時器 複製代碼 代碼如下:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <termios.h>#include <errno.h>#include <ctype.h>#include
Time of Update: 2017-01-19
在C語言中一般用typedef來為回呼函數定義別名(參數名)。 別名通過宏定義typedef來實現,不是簡單的宏替換。可以用作同時聲明指標型的多個對象。比如:複製代碼 代碼如下:char *pa,pb;//pa是一個char型指標,但pb是一個char型字元。我們可以這樣來實現typedef char* PCHAR;PCHAR pa,pb;//pa和pb都是char型指標先看一個回呼函數的例子:複製代碼
Time of Update: 2017-01-19
最近做了這樣一個題目,感覺挺有趣~題目如下:問題描述Winder 最近在玩一個數字遊戲,該遊戲是在一個n*m 的網格上進行的,每個格子上有 一個數字,代表這個格子的數值。玩家需要從網格的左上方的格子走到右下角的格子,每次 只能向右或者向下走,並且不能回頭。玩家每經過一個格子可以選擇分值是否加上該格子的 數值,每次遊戲的初始分數都是0。Winder 想知道在每場遊戲,他最多能夠得到多少分值。但是,Winder 很懶,所以你必 須幫他來完成這件事。資料輸入輸入第一行兩個正整數N 和M(0<N、
Time of Update: 2017-01-19
最近在搞Compiler的CodeGenerator實驗,有一部分需要把Java程式翻譯成C程式,比如:複製代碼 代碼如下:int [] array;array = new int[10];System.out.println(array.length); //10這段代碼翻譯成C很自然的想法是:複製代碼 代碼如下:int * array; // int array[] not support in Carray = (int*)malloc(sizof(int)*10);printf("%d\
Time of Update: 2017-01-19
C++中的引用和指標★ 相同點: 1. 都是地址的概念;指標指向一塊記憶體,它的內容是所指記憶體的地址;引用是某塊記憶體的別名(java中的引用其實也是別名的意思)。★ 區別: 1. 指標是一個實體,而引用僅是個別名;2. 引用使用時無需解引用(*),指標需要解引用;3. 引用只能在定義時被初始化一次,之後不可變;指標可變; 引用“從一而終” 4. 引用沒有 const,指標有 const,const 的指標不可變;5. 引用不可為空,指標可以為空白;6. “sizeof
Time of Update: 2017-01-19
開啟main.c編譯運行,注意,開啟main.c之後一定要將win32timer.c也加進工程中一起編譯,下面有圖。在開發單片機、ARM以及Linux系統的程式時,因為硬體定時中斷的存在我們很方便構造出定時ISR,然而在VC6.0中,我們如何寫一個定時程式呢?其實,就是timeSetEvent()這個函數的調用。這個函數的解釋見MSDN。詳細原理,請看我代碼中的注釋,我寫得很詳細了。main.c複製代碼 代碼如下://======================// main.c//======
Time of Update: 2017-01-19
複製代碼 代碼如下:#include <stdio.h>#include <stdlib.h>#include <pthread.h>#define THREAD_NUM 10void *test(void *args) { printf("tid %d: i say 'Hello'.\n", args); return NULL;}int main() { int i, err; pthread_t
Time of Update: 2017-01-19
介紹內嵌函式之前,有必要介紹一下預先處理宏。內嵌函式的功能和預先處理宏的功能相似。相信大家都用過預先處理宏,我們會經常定義一些宏,如複製代碼 代碼如下:#define TABLE_COMP(x) ((x)>0?(x):0)就定義了一個宏。為什麼要使用宏呢?因為函數的調用必須要將程式執行的順序轉移到函數所存放在記憶體中的某個地址,將函數的程式內容執行完後,再返回到轉去執行該函數前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的地址,轉回後要恢複現場,並按原來儲存地址繼續執行。因此,
Time of Update: 2017-01-19
一、預備知識—程式的記憶體配置一個由C/C++編譯的程式佔用的記憶體分為以下幾個部分1、棧區(stack)—由編譯器自動分配釋放,存放函數的參數值,局部變數的值等。其操作方式類似於資料結構中的棧。2、堆區(heap)—一般由程式員分配釋放,若程式員不釋放,程式結束時可能由OS回收。注意它與資料結構中的堆是兩回事,分配方式倒是類似於鏈表。3、全域區(靜態區)(static)—全域變數和靜態變數的儲存是放在一塊的,初始化的全域變數和靜態變數在一塊地區,未初始化的全域變數和未初始化的靜態變數在相鄰的另
Time of Update: 2017-01-19
clock_t clock( void );Calculates the processor time used by the calling processhead file is <time.h>Return Valueclock returns the number of clock ticks of elapsed processor time. The returned value is the product of the amount of time that has
Time of Update: 2017-01-19
void srand( unsigned int seed );head file is <stdlib.h>RemarksThe srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets