Time of Update: 2017-01-18
最近在編寫C++程式的過程中,需要使用matlab產生的.mat檔案,於是尋找了基本使用方法。 我的電腦環境是win7 64位系統,VS2010,matlab R2010b。 一、工程配置: 1.VC++目錄->包含目錄 添加: MATLAB\R2010b\extern\include MATLAB\R2010b\extern\include\win64 ->庫目錄 添加:
Time of Update: 2017-01-18
複製代碼 代碼如下:/* File name: bmpTest.c Author: WanChuan XianSheng Date: Oct 01, 2011 Description: Show all Info a bmp file has.
Time of Update: 2017-01-18
本人根據網路多個相關部落格文章原創1)產生dll建立兩個檔案 xxx.h , xxx.cppxxx.h內容如下:#ifdef BUILD_XXX_DLL#define EXPORT __declspec(dllexport)#else#define EXPORT __declspec(dllimport)#endifextern "C"{EXPORT void example(void);... ...}xxx.cpp內容如下:#define BUILD_XXX_DLL#include
Time of Update: 2017-01-18
什麼是類型轉換? 類型轉換的含義是通過改變一個變數的類型為別的類型從而改變該變數的表示方式。為了類型轉換一個簡單對象為另一個對象你會使用傳統的類型轉換操作符。C與C++的類型轉換C中:複製代碼 代碼如下:(T)element 或者 T(element)c++中:複製代碼 代碼如下:reinterpret_cast<T*> (expression)dynamic_cast<T*>
Time of Update: 2017-01-18
在c++中,extern關鍵字用來聲明變數和函數,在聲明函數的時候,有和沒有extern的效果一樣,即下面兩條語句具有同樣的效果:複製代碼 代碼如下:extern void fun(); void fun(); 但是對於變數,有和沒有extern就有區別,當有extern時,只是告知編譯器存在這個變數,編譯器並不為該變數分配儲存空間,即真正的聲明;若沒有extern,則在聲明的同時,編譯器也為該變數分配儲存空間。下面是有extern的情形時的c++源碼:複製代碼 代碼如下:int main(
Time of Update: 2017-01-18
首先是引用情形下的c++源碼:複製代碼 代碼如下:void add(int a, int b, int&c) { c = a + b;}int main() { int a = 1; int b = 2; int c = 0; add(a, b, c);}下面是main對應的彙編碼:複製代碼 代碼如下:;
Time of Update: 2017-01-18
下面從組合語言看其原理.下面是c++原始碼:複製代碼 代碼如下:void add() { static int i = 1; i++;}int main() { add();}下面是main對應的彙編碼複製代碼 代碼如下:; 5 : int main() { push
Time of Update: 2017-01-18
c++中的來源程式:複製代碼 代碼如下:class X {private: int i;};int main() { X x;}上面的類X沒有定義建構函式,僅僅有一個int i。下面為其組譯工具:複製代碼 代碼如下:; 7 : int main() { push
Time of Update: 2017-01-18
首先簡單說一下什麼是行壓縮圖,其實嚴格意義上應該是行壓縮矩陣。正常情況下,矩陣是用二維數組簡單儲存的,但是如果是疏鬆陣列,也就是零很多的時候,這樣比較浪費空間。所以就有各種節省空間的儲存方式,三元組儲存就是其中一種。什麼是三元組呢?一個三元組就是(row,col,value),這樣把所有不為零的值組成一個向量。這種儲存方式比二維數組節省了不少空間,當然還可以進一步節省,因為三元組裡面row或者col重複儲存了,一行或者一列存一次就行了,按這種思路走下去就是行壓縮儲存了。那具體什麼是行壓縮儲存呢?
Time of Update: 2017-01-18
如何計算矩陣乘法,這個大家都知道。通常情況下,我們都是用以下代碼實現的:複製代碼 代碼如下:for(i=0;i<n;++i) for(j=0;j<n;++j){ sum=0;
Time of Update: 2017-01-18
在進行memcpy操作時,雖然是記憶體操作,但是仍然是耗一點點CPU的,今天測試了一下單線程中執行memcpy的效率,這個結果對於配置TCP epoll中的work thread數量有指導意義。如下基於8K的記憶體快執行memcpy, 1個線程大約1S能夠拷貝500M,如果伺服器頻寬或網卡到上限是1G,那麼網路io的work thread 開2個即可,考慮到訊息的解析損耗,3個線程足以抗住硬體的最高負載。在我到測試機器上到測試結果是:Intel(R) Xeon(R)
Time of Update: 2017-01-18
C語言前置處理器執行宏替換、條件編譯和檔案包含。通常採用以“#”為行首的提示。下面是C語言預先處理的應用場合: 1.三字母詞(Trigraph Sequences) C來源程式的字元集被包含在7位的ASCII字元集中,但是它是ISO 646-1983 Invariant Code Set的超集。為了讓程式可以在縮減集(reduced set)中呈現出來,下面的三字母詞會被替換成相應的單字元.三字母詞單字元??=#??/\??'^??([??)]??!|??<{??>}??-~
Time of Update: 2017-01-18
有了之前的基礎,此文只是把一些以前沒有注意到的和值得學習的知識做一個記錄。第一章 作者認為使用#if 0 .... #endif比用/*和*/好,因為後者不能嵌套。但是對於//並沒有說明。第二章 三字母詞,用兩個問號加一個符號表示另一個符號,比較類似於逸出字元。查閱了一些資料,它的使用與編譯器有關,瞭解即可,防止字串常量被錯誤的解釋。複製代碼 代碼如下:??( ==> [ ??< ==> { ??= ==> # ??) ==> ]
Time of Update: 2017-01-18
首先看一個例子:複製代碼 代碼如下:#include <iostream> using namespace std; class A{}; class B { int b; char c; }; class C { int c1;
Time of Update: 2017-01-18
1、複製代碼 代碼如下:const char *str = "test測試test";while(*str){//這裡只需要判斷第一個位元組大於0x80就行了,前提是輸入的是合法的GBK字串//原因在於,如果第一個位元組大於0x80,那麼它必然和後面一個位元組一起組成一個漢字//所以就沒有必要再去判斷後面一個位元組了//再強調一下,前提條件是輸入合法的GBK字串if(*str > 0x80){// 漢字,計數器++str += 2;//是漢字自然就該直接+2了}else{str++;}}2
Time of Update: 2017-01-18
首先,當考慮到記憶體分配和執行效能的時候,使用std::deque要比std::vector好。Deque總覽deque和vector一樣都是標準模板庫中的內容,deque是雙端隊列,在介面上和vector非常相似,在許多操作的地方可以直接替換。假如讀者已經能夠有效地使用vector容器,下面提供deque的成員函數和操作,進行對比參考。函數描述c.assign(beg,end)c.assign(n,elem) 將[beg; end)區間中的資料賦值給c。將n個elem的拷貝賦值給c。
Time of Update: 2017-01-18
區別C++中對於類來說,對於其中的成員,用點操作符.來獲得,而對於一個指向類對象的指標來說,則用箭頭操作符->調用該指標所指向對象的成員。當類定義->重載操作符後,則既可以用箭頭操作符,也可以用點操作符。重載->操作符重載箭頭操作符必須定義為類成員函數。沒有顯式形參(而且是類成員,唯一隱式形參是this)。->的右運算元不是運算式,而是對應類成員的一個標識符,由編譯器處理擷取成員工作。重載箭頭操作符必須返回指向類類型的指標,或者返回定義了自己的箭頭操作符的類類型對象。如果
Time of Update: 2017-01-18
整數轉換為字串:char *itoa( int value, char *string,int radix);小數轉換為字串:sprintf(串, 格式控制符列, 資料);字串轉小數:double atof(const char *nptr);字串轉整數:int atoi(const char *nptr);測試代碼:複製代碼 代碼如下:#include<stdio.h> #include<stdlib.h> int
Time of Update: 2017-01-18
我在《Linux 多線程服務端編程:使用 muduo C++ 網路程式庫》第 1.9 節“再論 shared_ptr 的安全執行緒”中寫道:(shared_ptr)的引用計數本身是安全且無鎖的,但對象的讀寫則不是,因為 shared_ptr 有兩個資料成員,讀寫操作不能原子化。根據文檔(http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm#ThreadSafety), shared_ptr
Time of Update: 2017-01-18
儘管這個概念已經讓人說濫了 ,還是想簡單記錄一下, 以備以後查詢。複製代碼 代碼如下:#ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP_ALLOC#include <crtdbg.h>#ifdef _DEBUG#define new DEBUG_