原创 11) 爲STL容器和數組提供統一的接口DataSet [原創,泛型編程,自由下載轉載,需註明出處]

源代碼可以在我的資源中去下載(包括用法測試的源代碼): http://download.csdn.net/detail/tonny0832/7426991 只需要用VS建一個空的工程,然後引入我的測試頭文件即可。然後測試函數會在main函

原创 簡單地使用sym*函數族導出函數棧(Based on x86)

有時我們需要導出當前線程的函數棧調用(特別是異常發生時),但是我們又不期望自己來實現這個功能,下面的源代碼可以幫你解決。 導出函數棧其實就是sym*函數族的應用,該函數在dbghelp.dll中的,下面只是實現了簡單的用法,使用的缺省的符

原创 9) 泛型數學運算符函數mathOperator [原創,泛型編程,自由下載轉載,需註明出處]

下面是一些算術操作符,其通常作爲一些接口的比較參數傳入。泛型的。 #ifndef mathOperator_h__ #define mathOperator_h__ #include "typeConvert.h" #include "m

原创 9) 常用函數對象functionobject [原創,泛型編程,自由下載轉載,需註明出處]

源代碼可以在我的資源中去下載(包括用法測試的源代碼): http://download.csdn.net/detail/tonny0832/7426991 只需要用VS建一個空的工程,然後引入我的測試頭文件即可。然後測試函數會在main函

原创 13) 參數適配ParamterWrapper [原創,泛型編程,自由下載轉載,需註明出處]

我們在寫C++接口時,通常會有下列參數形式:  T, T&以出於不同的需求,比如對於一些內置類型,由於其複製很高效,T及T&沒有什麼大的區別,我們就可以使用T形式; 但是對於一些比較大的對象,如果用T,則傳遞過程中會構造臨時對象出來,浪

原创 1) 獲取類型特徵typeTraits [原創,泛型編程,自由下載轉載,需註明出處]

源代碼可以在我的資源中去下載(包括用法測試的源代碼): http://download.csdn.net/detail/tonny0832/7426991 只需要用VS建一個空的工程,然後引入我的測試頭文件即可。然後測試函數會在main函

原创 12) 類型安全的任意類CAnyObject [原創,泛型編程,自由下載轉載,需註明出處]

anyObject.h , 這是泛型庫中13個源文件中的一個, 這個源文件可以封裝任意類到一個共同的類中,不需要封裝的類之間有任何聯繫,在具體應用時,down-cast時是類型安全的,並且不需要RTTI的支持。(有些開發環境爲了提高運行

原创 0) 原創的一套泛型源代碼,用於改善STL的易用性,效率,功能增強。(拿出來和朋友們分享)

總結自己這些年來的編程經驗,深感大家都不太愛使用成熟的泛型源代碼算法,因爲這些算法使用比較麻煩,有時甚至得不償失,比如沒有(時間/空間)效率優化,使用stl算法比自己寫算法編程更慢(因爲需要提供算法的配套接口),算法的功能不夠。 自己實現

原创 遍歷所有時區的代碼[windows]

windows沒有提供遍歷時區的代碼,只提供了一些接口,讓用戶自己從註冊表中遍歷。比較麻煩,下面代碼把這個功能封裝了一下,讓用戶可以比較簡單地處理所有時區。 其中字符串用的是core::cstringex,大家可以用STD裏面的字符串來代

原创 內部鏈接(internal linkage)和外部鏈接(external linkage)

內部鏈接(internallinkage)/外部鏈接 (externallinkage)是和編譯單元(translation unit)相關的一個術語,其主要影響函數或者對象的作用域及存儲方式—是全局只存儲一個,還是全局有許多量的副本。

原创 typeid及RTTI

C++中類型識別符typeid分靜態識別和動態識別。 靜態識別是指在編譯階段進行的識別,動態識別是指在運行階段進行的識別。 只有動態識別需要RTTI的支持,但是RTTI是否打開不影響編譯鏈接,隻影響運行結果是否正確。   typeid的工

原创 14) 常用的遍歷/(條件)查找/收集數據/(拷貝2比較優先)排序算法algorithm [原創,泛型編程,自由下載轉載,需註明出處]

下面的一套算法,配合前面提供的泛型庫的支持部件,能夠提供下列基於概念的功能: 1.遍歷處理 3.查找 5.收集 : 收集的結果可以是任何形式的:數組/容器,T/T*,並且調用接口是完全相同的(減輕用戶負擔),代碼內部會自動進行類型識別。

原创 避免創建不必要的大對象(把大對象轉換爲小對象)

在模板函數中,很多情況下,我們僅僅需要一個對象的類型,而並不需要這個對象的實體,例如:  template<typenameT> void HandObject() {                 cout<< typeid(T).

原创 8) 多級結構數據成員指針memberPtr [原創,泛型編程,自由下載轉載,需註明出處]

源代碼及用法測試代碼可以在我的資源中去下載. 在一些需求中,對結構體比較/計算/求和/測試的用例中,其往往是對結構/中的某一個數據成員/數據成員的某個子成員/數據成員的...某個子成員進行比較/計算/求和/測試,這就對某類算法產生了一個

原创 2) 轉換類型typeConvert [原創,泛型編程,自由下載轉載,需註明出處]

這些基於typeTraits提供的一些類型轉換功能,比如典型的if-else等等,判斷兩個類型是否相同,是否原始類型相同,是否可轉換,是否值可轉換,是否基類派生類,是否序列類,是否數組,是否是原子類型,是否是內置類型,是否是枚舉類型。 在