Time of Update: 2017-01-19
不知你在寫code時是否遇到這樣的問題?int i = 3; int x = (++i) + (++i) + (++i); 問x值為多少?進行各種理論分析,並在編譯器上實踐,然而可能發現最終的結果是不正確的,也是不穩定的,不同的編譯器可能會產生不同的結果。這讓人很頭疼。結果到底是啥呢?對於此題的答案,一句話,Theresult is undefined!
Time of Update: 2017-01-19
散列表(也叫雜湊表)是一種尋找演算法,與鏈表、樹等演算法不同的是,散列表演算法在尋找時不需要進行一系列和關鍵字(關鍵字是資料元素中某個資料項目的值,用以標識一個資料元素)的比較操作。
Time of Update: 2017-01-19
今天在編寫99乘法線上小遊戲(看過我的 linux下c實現的Database Backup(第四版)應該知道我在那裡提過^.^)的時候遇到讀取檔案的資訊遇到斷行符號分行符號的煩惱。比如我檔案裡面有如下資訊:name=qizexisex=man我希望讀取到name=qizexi這些有效字元而已,不希望\r\n也加入其中,因為那樣會影響我的判斷。解決的方式是在遇到\r擷取\n的時候,替換為\0.#include<string.h>#include<stdio.h> int
Time of Update: 2017-01-19
1. 用virtual關鍵字申明的函數叫做虛函數,虛函數肯定是類的成員函數。2. 存在虛函數的類都有一個一維的虛函數表叫做虛表。類的對象有一個指向虛表開始的虛指標。虛表是和類對應的,虛表指標是和對象對應的。3. 多態性是一個介面多種實現,是物件導向的核心。分為類的多態性和函數的多態性。4. 多態用虛函數來實現,結合動態綁定。5. 純虛函數是虛函數再加上= 0。6. 抽象類別是指包括至少一個純虛函數的類。純虛函數:virtual void
Time of Update: 2017-01-19
友元函數是可以直接存取類的私人成員的非成員函數。它是定義在類外的普通函數,它不屬於任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend。我們已知道類具有封裝和資訊隱藏的特性。只有類的成員函數才能訪問類的私人成員,程式中的其他函數是無法訪問私人成員的。非成員函數可以訪問類中的公有成員,但是如果將資料成員都定義為公有的,這又破壞了隱藏的特性。另外,應該看到在某些情況下,特別是在對某些成員函數多次調用時,由於參數傳遞,類型檢查和安全性檢查等都需要時間開銷,而影響程式的運行
Time of Update: 2017-01-19
記住:通常待用資料成員在類聲明中聲明,在包含類方法的檔案中初始化.初始化時使用範圍操作符來指出靜態成員所屬的類.但如果靜態成員是整型或是枚舉型const,則可以在類聲明中初始化!!!複製代碼 代碼如下:#include <iostream>using namespace std;class test{public:static int num;};int test::num = 0;void main(){cout<<test::num
Time of Update: 2017-01-19
在C++中則把字串封裝成了一種資料類型string,可以直接聲明變數並進行賦值等字串操作。以下是C字串和C++中string的區別: C字串 string對象(C++)所需的標頭檔名稱 <string>或<string.h> <string>或<string.h>需要標頭檔 原因 為了使用字串函數 為了使用string類聲明 方式 char
Time of Update: 2017-01-19
一,static和extern:大工程下我們會碰到很多來源文件。文檔a.c複製代碼 代碼如下:static int i; //只在a文檔中用int j; //在工程裡用static void init() //只在a文檔中用{}void callme() //
Time of Update: 2017-01-19
最小產生樹Prim演算法樸素版 有幾點需要說明一下。1、2個for迴圈都是從2開始的,因為一般我們預設開始就把第一個節點加入產生樹,因此之後不需要再次尋找它。2、lowcost[i]記錄的是以節點i為終點的最小邊權值。初始化時因為預設把第一個節點加入產生樹,因此lowcost[i] = graph[1][i],即最小邊權值就是各節點到1號節點的邊權值。3、mst[i]記錄的是lowcost[i]對應的起點,這樣有起點,有終點,即可唯一確定一條邊了。初始化時mst[i] =
Time of Update: 2017-01-19
題目描述: 大家都知道資料結構裡面有一個結構叫做迴圈隊列。顧名思義,這是一個隊列,並且是迴圈的。但是現在,淘氣的囧哥給這個迴圈隊列加上了一些規矩,其中有5條指令: (1) Push K, 讓元素K進隊列。 (2) Pop,對頭元素出隊列。 (3) Query K,尋找隊列中第K個元素,注意K的合法性。 (4)
Time of Update: 2017-01-19
優先隊列(priority_queue)和一般隊列(queue)的函數介面一致,不同的是,優先隊列每次出列的是整個隊列中最小(或者最大)的元素。本文簡要介紹一種基於數組二元堆積實現的優先隊列,定義的資料結構和實現的函數介面說明如下:一、索引值對結構體:KeyValue複製代碼 代碼如下:// =============KeyValue Struct==================================typedef struct key_value_struct KeyValue;
Time of Update: 2017-01-19
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost-incrementPost-decrement(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;
Time of Update: 2017-01-19
1、基本概念a、路徑和路徑長度若在一棵樹中存在著一個結點序列 k1,k2,……,kj, 使得 ki是ki+1 的雙親(1<=i<j),則稱此結點序列是從 k1 到 kj 的路徑。從 k1 到 kj
Time of Update: 2017-01-19
用遞迴法求N的階乘程式調用自身稱為遞迴( recursion).它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解.遞迴的能力在於用有限的語句來定義對象的無限集合。一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。#include <stdio.h>#include <string.h>#include <stdlib.h>long factorial(int n){
Time of Update: 2017-01-19
在gcc中,可以使用attribute關鍵字,聲明constructor和destructor,代碼如下:複製代碼 代碼如下:#include <stdio.h>__attribute((constructor)) void before_main(){ printf("%s/n",__FUNCTION__);}__attribute((destructor)) void
Time of Update: 2017-01-19
C記憶體配置地區程式碼區存放函數體的二進位代碼全域資料區全域變數和靜態變數的儲存是放在一起的。初始化的全域變數和靜態變數在一塊地區,未初始化的全域變數和未初始化的靜態變數在相鄰的另一塊地區。常量資料存放在另一個地區裡。這些資料在程式結束後由系統釋放。我們所說的BSS段(bss segment)通常是指用來存放程式中未初始化的全域變數的一塊記憶體地區。BSS是英文Block Started by
Time of Update: 2017-01-19
最常想到的方法是使用KMP字串匹配演算法:#include <stdio.h>#include <stdlib.h>#include <string.h>int get_nextval(char *pattern, int next[]){ //get the next value of the pattern int i = 0, j = -1; next[0] = -1; int patlen = strlen(pattern); while
Time of Update: 2017-01-19
1.添加標頭檔複製代碼 代碼如下:#include <utils/Log.h> //或者 #include <cutils/Log.h> 這個時候可以使用ALOGE/ALOGI/ALOGW 等方法列印出log 不過有些地方不能這麼使用,因為依賴libutils libctuils庫在mk檔案見添加如下依賴編譯即可複製代碼 代碼如下:#LOCAL_MODULE := ... ...
Time of Update: 2017-01-19
具體歸納如下:(1)reinterpret_cast該函數將一個類型的指標轉換為另一個類型的指標.這種轉換不用修改指標變數值存放格式(不改變指標變數值),只需在編譯時間重新解釋指標的類型就可做到.reinterpret_cast 可以將指標值轉換為一個整型數,但不能用於非指標類型的轉換.例://基本類型指標的類型轉換double d=9.2;double* pd = &d;int *pi = reinterpret_cast<int*>(pd); //相當於int
Time of Update: 2017-01-19
一、原型:extern void *malloc(unsigned int num_bytes);標頭檔:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 與 malloc.h 的內容是完全一致的。)功能:分配長度為num_bytes位元組的記憶體塊說明:如果分配成功則返回指向被分配記憶體的指標,否則返回null