Time of Update: 2017-02-27
運算式1,應該把函數調用當作是一種運算子,這種運算子對參與運算的對象沒有數量限制。2,關於“左值(lvalue)”和“右值(rvalue)”可以做一個簡單的歸納:當一個對象被用作右值的時候,用的是對象的值(內容);當對象被用作左值的時候,用的是對象的身份(在記憶體中的位置)。更具體的左值與右值的舉例:C++ priemr 5ed
Time of Update: 2017-02-27
一、Graphviz + CodeViz簡單介紹CodeViz是《Understanding The Linux Virtual Memory Manager》的作者 Mel Gorman 寫的一款分析C/C++原始碼中函數調用關係的open source工具(類似的open source軟體有 egypt、ncc)。其基本原理是給 GCC 打個補丁(如果你的gcc版本不符合它的要求還得先下載正確的gcc版本),讓它在編譯每個源檔案時 dump 出其中函數的 call graph,然後用
Time of Update: 2017-02-27
最近因為科研需求,一直在研究Google的開源RE2庫(Regex識別庫),庫源碼體積龐大,用C++寫的,對於我這個以前專供Java的人來說真的是一件很痛苦的事,每天只能啃一點點。今天研究了下裡面用到的測試方法,感覺挺好的,拿來跟大家分享下!(哈~C++大牛勿噴)對於我這個C++菜鳥中的菜鳥而言,平時寫幾個函數想要測試一般都是在main中一個一個的測試,因為沒用C++寫過項目,沒有N多方法所以在main中一個個測試也不費勁。但是對於一個項目而言,或多或少都有N多方法,如果在main中一個個測試的
Time of Update: 2017-02-27
如果思路是計算三者重合的時間,那麼會讓謎題變得很複雜,具體數學分析也可以看下面網址。http://www.planetseed.com/node/18560但是這裡使用簡單一點的思路,思路一變,那麼程式就可以寫的很簡單了,如下:思路:1 先解決時針和分針重合問題,如我前面一篇部落格,可以看到12小時之內重合12次(算上頭尾兩次)。2
Time of Update: 2017-02-27
當C#項目需要引用C++dll的時候可以直接使用DLLIMPORT來進行調用。而反向的話,C++項目並不能簡單靠引用來使用C#DLL。因為C++項目預設配置是沒有公用語言運行庫支援的。所以我們需要更改一些配置來進行對C# dll的調用。步驟如下:首先我們完成C# dll開發:namespace Csharp { public class Class1 { public string Name = string.Empty;
Time of Update: 2017-02-27
局部變數:在函數內部聲明的變數為局部變數,局部變數的意思即該變數只存活在該函數中,假如該函數調用結束,那麼該變數的壽命也結束了.舉例:#include<iostream>using namespace std;void swap(int ,int );//兩個參數變數可以省略int main(){ int x=3,y=4;
Time of Update: 2017-02-27
假設有一個檔案,檔案的每一行包括n個整數,整數之間以一個空格隔開,檔案總共有m行,但是事先不知道n,m。如何每次從檔案中讀取一行整數放到一個數組中。可以分為兩步:1、首先從檔案中讀入一行字串,2、然後從這一行字串中解析出整數。對於第一步,我們可以有c、c++兩種風格的做法c風格:FILE *fp = fopen("input.txt", "r"); char buf[10000]; while(fgets(buf, 10000, fp))
Time of Update: 2017-02-27
需求:准入授權設定檔有時候分了好幾個維度進行配置,例如 company|product|sys這種格式的配置:1.配置 "sina|weibo|pusher" 表示 sina公司weibo產品pusher系統能夠准入,而"sina|weibo|sign"不允許准入2.配置 "sina|*|pusher” 表示sina公司所有產品的pusher系統都能夠准入3.配置 “*|*|pusher”
Time of Update: 2017-02-27
假若我們定義了Str類如下結構class Str { public: Str(int n) Str(const char* p) ..... }可以使用如下方式來構建一個對象 Str c(12); Str d=Str(20); Str *z=new Str(21); Str a=10;//此處構建10個大小的空間 Str b="abcd";//此處構建特定字串大小空間 Str f='f';
Time of Update: 2017-02-27
一,什麼是記憶體對齊?記憶體對齊用來做什嗎?所謂記憶體對齊,是為了讓記憶體存取更有效率而採用的一種編譯階段最佳化記憶體存取的手段。比如對於int x;(這裡假設sizeof(int)==4),因為cpu對記憶體的讀取操作是對齊的,如果x的地址不是4的倍數,那麼讀取這個x,需要讀取兩次共8個位元組,然後還要將其拼接成一個int,這比存取對齊過的x要麻煩很多。二,怎麼算記憶體對齊大小(理論)?對於簡單類型,如int,char,float等,其對齊大小為其本身大小,即align(int) ==
Time of Update: 2017-02-27
本系列示範如何使用 Rafy 領域Entity Framework快速轉換一個傳統的三層應用程式,並展示轉換完成後,Rafy 帶來的新功能。以 Rafy 開發的應用程式,其實體、倉庫、服務代碼不需要做任何修改,即可同時支援單機部署、C/S 分布式部署。本文將說明如果快速使用 C/S 分布式部署。前言截止到上一篇,我們開發的應用程式都是採用直接連接資料庫的模式:接下來,將通過一些簡單的調整,使得這個應用程式支援以 C/S
Time of Update: 2017-02-27
摘要: 在實際應用中,經常要求客戶機/伺服器體繫結構中各工作站的時鐘與伺服器的時鐘保持同步;本文基於SYBASE資料庫、Powerbuilder開發工具說明了一種解決方案。一、前言PowerBuilder通過資料視窗對象,可方便、直接地對資料庫進行操作,故已成為當前開發Client/Server模式應用的首選開發工具。在開發醫院資訊管理系統時,我們採用了PowerBuilder
Time of Update: 2017-02-27
上一篇文章裡我談了Java和C#語言中對於基礎類型的不同態度,我認為C#把基礎類型視做對象的做法比Java更有“萬物皆對象”的理念 ,使用起來也更為方便。此外,C#擁有一個Java 1.4所不存在的特性,即Attribute(自訂特性),而在之後的Java 5.0中也增加了類似 的功能,這便是Annotation(標註)。那麼,Attribute的作用是什麼,Java中的Annotation和C#中的 Attribute又有什麼區別呢,Java 5.0中又從C#
Time of Update: 2017-02-27
既然已經談過這次語言比較的意義與目的,而完整的投影片和錄音也已經放出,那麼接下來自然是詳細討論了。在這篇文章中,我會對 兩個語言的基本特徵進行簡單描述,並主要討論兩者對於基礎類型的處理方式。在我看來,Java語言對於基礎類型的處理方式,並不如C# 中實值型別般妥當。如果您有任何覺得不妥或是想要補充的意見,請不吝回複。由於C# 1.0發佈於2002年,因此本文內容將基於Java 1.4及 C#
Time of Update: 2017-02-27
為什麼是Java?這個系列我將詳細比較C#和Java——語言,而不關Java平台任何事情。其實這本不想強調這一點,因為語言和平台之間是沒有任何可比 性的。因為C#明顯只是一門語言,因此根據“類型推斷”,則Java也應該是“語言”類型才對。因此,我在標題中就不想加入“Language
Time of Update: 2017-02-27
ms = MAX_SMELL; break; } if(IsTrace(i,j)) continue; if(Smell[type][i][j]>ms) ms = Smell[type][i][j]; } break;
Time of Update: 2017-02-27
} /* of have smell to drop */ } /* of have food */ else /* no food, looking for food */ { if(ant[AntNow].SmellAmount[SMELL_TYPE_HOME]) { smellnow =
Time of Update: 2017-02-27
fclose(fp_block);}void HomeFoodInitial(void){int randnum;int homeplace;/* 1 -- home at left-up, food at right-down2 -- home at left-down, food at right-up3 -- home at right-up, food at left-down4 -- home at right-down, food at left-up */randnum =
Time of Update: 2017-02-27
演算法解釋:程式開始運行,螞蟻們開始從窩裡出動了,尋找食物;他們會順著螢幕爬滿整個畫面,直到找到食物再返回窩。其中,‘F’點表示食物,‘H’表示窩,白色塊表示障礙物,‘+’就是螞蟻了。預期的結果:各個螞蟻在沒有事先告訴他們食物在什麼地方的前提下開始尋找食物。當一隻找到食物以後,它會向環境釋放一種資訊素,吸引其他的螞蟻過來,這樣越來越多的螞蟻會找到食物!有些螞蟻並沒有象其它螞蟻一樣總重複同樣的路,他們會另闢蹊徑,如果令開闢的道
Time of Update: 2017-02-27
這是一個基於LZARI演算法的資料壓縮的類.Haruhiko Okumura 於1989年7月4日用c語言寫實現了這個演算法.但是上面用到了一些全域或靜態變數,在MFC下用起來很不方便.我把它改寫成了一個c++類,使它可以方便的壓縮和解壓縮,更重要的是,我新增加了兩個介面,這個類可以壓縮/解壓縮一段記憶體緩衝區,而不僅僅是檔案.一共提供了5個對外介面:1.壓縮/解壓縮檔案void Compress(const char *lpszInfile,const char