Time of Update: 2017-01-19
本文執行個體講述了C++設定逾時時間的簡單實現方法,代碼簡單易懂,功能實用。分享給大家供大家參考。具體實現方法如下:複製代碼 代碼如下:BOOL SetTimeOut(SOCKET s, int nTime, BOOL bRecv) { int ret = ::setsockopt(s, SOL_SOCKET, bRecv?SO_RCVTIMEO:SO_SNDTIMEO, (char*)nTime, sizeof(nTime)
Time of Update: 2017-01-19
本文執行個體講述了C++計算ICMP頭的校正和的方法,分享給大家供大家參考。具體實現代碼如下:複製代碼 代碼如下:USHORT checksum(USHORT* buff, int nSize) { unsigned long cksum=0; //將資料以字為單位加到cksum while (nSize > 1) &
Time of Update: 2017-01-19
本文執行個體講述了C++實現廣播通訊的方法。分享給大家供大家參考。具體實現方法如下:廣播通訊代碼架構:1. 協議都是:複製代碼 代碼如下:SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);2. 服務端設定選項複製代碼 代碼如下:BOOL bBroadcast = TRUE; ::setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(BOOL));3. 服務端向255.
Time of Update: 2017-01-19
複製代碼 代碼如下:#include<iostream> using namespace std; void init();void function(int m); int canplace(int row,int col,int c); void outputresult();int a[9][9], maxm = 0;int main() { init(); function(0); return 0; } void init(){
Time of Update: 2017-01-19
冒泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端,故名。由於冒泡排序簡潔的特點,它通常被用來對於電腦程式設計入門的學生介紹演算法的概念。複製代碼 代碼如下:#include <stdio.h>int swap(int *a, int *
Time of Update: 2017-01-19
從console輸入一個數,判斷這個數是否為素數(質數)。複製代碼 代碼如下:#include <stdio.h>/**判斷100以內的素數*///定義函數判斷是否是素數int isPrime(int num ){ int i; //從2開始迴圈,一直到i的平方小於等於給定的數。 for (i = 2; i*i <= num; i++)
Time of Update: 2017-01-19
問題描述:輸入一個字串,輸出該字串中最大對稱子串的長度。例如輸入字串:“avvbeeb”,該字串中最長的子字串是“beeb”,長度為4,因而輸出為4。解決方案:中序遍曆一,全遍曆的方法:1.全遍曆的方法,複雜度O(n3);2.遍曆原字串的所有子串,然後判斷每個子串是否對稱;實現方法是:我們讓一個指標i從頭至尾遍曆,我們用另一個指標j從j=i+1逐一指向i後面的所有字元。就實現了原串的所有子串的遍曆(子串為指標i到j中間的部分);最後判斷得到的子串是否對稱即可;二,此外還有個巧妙的方法,值得和大家
Time of Update: 2017-01-19
快速排序不會直接得到最終結果,只會把比k大和比k小的數分到k的兩邊。(你可以想象一下i和j是兩個機器人,資料就是大小不一的石頭,先取走i前面的石頭留出迴旋的空間,然後他們輪流分別挑選比k大和比k小的石頭扔給對面,最後在他們中間把取走的那塊石頭放回去,於是比這塊石頭大的全扔給了j那一邊,小的全扔給了i那一邊。只是這次運氣好,扔完一次剛好排整齊。)為了得到最後結果,需要再次對下標2兩邊的數組分別執行此步驟,然後再分解數組,直到數組不能再分解為止(只有一個資料),才能得到正確結果。 ——
Time of Update: 2017-01-19
1.插入排序插入排序(Insertion Sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。時間複雜度:O(n^2);演算法描述:1.從第一個元素開始,該元素可以認為已經被排序2.取出下一個元素,在已經排序的元素序列中從後向前掃描3.如果該元素(
Time of Update: 2017-01-19
在Java,要實現某個時間調用某段代碼,是很簡單的事情,那就是使用介面。而在C++裡,有一個比較高深的方式,那就是使用函數指標。比如Cocos2d-x的定時器(schedule)、訊息訂閱(NotificationCenter)都使用了函數指標來完成回調的功能。這也是為什麼我們總是能把某個函數作為參數傳進去,然後在某個時刻這個函數會被調用。一、函數的地址要擷取一個int變數的地址很簡單,比如int num;
Time of Update: 2017-01-19
這次又到了比較簡單的內容了,介紹了一些基本的迴圈控制、關聯運算式、邏輯控制等。這裡就簡單抽一些稍微比較特別的內容來吹吹水,不,是來總結一下吧~一、i++和++i不,我不是來解釋i++和++i的區別的,只是書上提到一點,在使用for迴圈的時候,倒底i++和++i有沒有區別呢?答案是:幾乎沒有,隨便你用哪一個。 但是,要稍微注意一下兩種方式的內部處理方式:i++:先複製一個i的副本,然後將i加1,最後返回i的副本。++i:將i加1,然後返回i。 這麼一說,大家都知道誰的效率更高,
Time of Update: 2017-01-19
預先處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預先處理不做語法檢查。預先處理命令以符號“#”開頭。 常用的預先處理指令包括:宏定義:#define檔案包含:#include條件編譯:#if、#elif、#ifndef、#ifdef、#endif、#undef錯誤資訊指令:#error#line指令布局控制:#pragma宏定義 宏定義又稱為宏代換、宏替換,簡稱“宏”。宏替換隻作替換,不做計算,不做運算式求解。宏定義分帶參數的宏定義和不帶參數的宏定義。在帶參數的宏定義,宏名
Time of Update: 2017-01-19
今天是關於指標初步介紹的最後一篇,也是能讓初學者明白為什麼類是new出來的、為什麼某些變數會莫名被釋放,以及為什麼木頭會這麼聰明。1.使用new建立動態結構體還記得我們的結構體吧?之前說過,結構體也是可以通過new來建立儲存空間的,返回的是一個指向結構體類型空間的指標。如下代碼:複製代碼 代碼如下:struct Man { int age; &
Time of Update: 2017-01-19
今天的標題取得..好嚴肅的感覺。(小若:咳噗)這章的內容雖然還是很詳(lao)細(dao),但已經開始有很多值得記錄的內容了~那麼,今天就來初次介紹數組與字串…以及結構體..還有共用體..吧。1.數組我記得大四實習的時候,請教同事:“什麼是屬主?”(其實是和資料庫相關的東西)然後同事驚訝地說道:“啊,你連數組都不知道..這,基礎還是要好好補補…呐,數組的意思呢,是這樣的…”我聽著聽著就不對勁,“等等,這是數組…其實我是問這個屬主…”然後同事鬆了一口氣,估計心裡在想,“唉,嚇死我,我以為來了個渾水
Time of Update: 2017-01-19
哎,木了個頭的,這書太詳細了~看得累人前面部分太過基礎了,很多文法方法的東西我也不重複記錄了~今天才看看C++涉及到資料的一些基礎點吧,我把書中稍微比較有營養的部分抽離出來1.初始化一般情況下,我們聲明和初始設定變數是這樣的:int iNum = 10;其實這是延續了C語言的文法,C++還有一種文法,是這樣的:int
Time of Update: 2017-01-19
我很鬱悶,這本書果然講得很詳細,我在看第二章,看完要深呼吸,實在太詳(lao)細(dao)了。不過這很好,後面難一些的內容應該會不錯~ 那麼,這章只是作為預覽的章節,我抽出一些稍微比較有營養的內容記錄一下吧~ 注意:本系列教程不適合無任何程式設計語言基礎的朋友,只是作為C++基礎的一種補充。教程內容基於《C++ Primer Plus》一書,適合初學者,熟手請直接忽略。1.
Time of Update: 2017-01-19
首先我表示很悲劇,在看《程式員的自我修養--連結、裝載與庫》之前我竟不知道C有強符號、弱符號、強引用和弱引用。在看到3.5.5節弱符號和強符號時,我感覺有些困惑,所以寫下此篇,希望能和同樣感覺的朋友交流也希望高人指點。 首先我們看一下書中關於它們的定義。 引入情境:(1)檔案A中定義並初始設定變數i(int i = 1), 檔案B中定義並初始設定變數i(int i = 2)。編譯連結A、B時會報錯b.o:(.data+0x0): multiple definition of `i';a.o:
Time of Update: 2017-01-19
本文執行個體講述了C/C++函數調用棧的實現方法。可用於實現簡單的指令碼解譯器。分享給大家供大家參考。具體實現方法如下:標頭檔聲明部分:複製代碼 代碼如下:#pragma onceconst int BUFFERSIZE = 1024;const int growfactor = 2; // this stack is used as call stack.class TStack{private:size_t size; // the stack
Time of Update: 2017-01-19
個人感覺VC6.0太土了,而且有很多bug存在,且微軟早就不對其更新。所以,在選擇C++編程的時候。使用IDE,VC6.0一段時間以後,我毅然決然的放棄了,覺得還是使用VS2010比較有前途。但是當使用VS2010的時候,發現了不少問題,用了不少辦法終於將問題挨個解決,所謂“工欲善其事,必先利其器”。想要快速的開發C++軟體,絕對離不開一款好用的IDE。如下為使用中需要的問題,已經解決方案。1、任意建立一個新的對話方塊工程,整個解決方案檔案夾大小達到了100M,垃圾太多了。解決方案:工具--&g
Time of Update: 2017-01-19
new、delete(new[]、delete[])操作符的重載需要注意:1.重載的 new、delete(或者 new[]、delete[])操作符必須是類的靜態成員函數(為什麼必須是靜態成員函數,這很好理解,因為 new 操作符被調用的時候,對象還未構建)或者是全域函數,函數的原型如下:複製代碼 代碼如下:void* operator new(size_t size) throw(std::bad_alloc);// 這裡的 size 為分配的記憶體的總大小void* operator