我發現... 現在的業務量真的很難讓我每天一更又要維持原本的生活, 嘖嘖, 不過不得不說, 自從開始用這個方式後, 真的能夠比較快速的進入醒腦狀態... 比喝咖啡還有效; 而這一次的題目是Linklist, 話說我也好久沒有用到這個東西, 說真的自從各種像是vector, map, stack 出來後, 對於linklist的需求好像就越來越少了; 

 

文章標籤

Eric 發表在 痞客邦 留言(0) 人氣()

剛剛看了一下累積人數, 突然覺得還蠻自豪的, 寫了這麼多年, 終於升級成百萬部落客了, 這感覺挺妙的; 不知道這樣會不會有人想要來打點廣告之類的:D ( 有的話歡迎底下留言或私訊一下好了, 讓我也享受一下接接業配的感覺 ).

 

Eric 發表在 痞客邦 留言(0) 人氣()

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

Eric 發表在 痞客邦 留言(0) 人氣()

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

For example, 2 is written as II in Roman numeral, just two one's added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.

Eric 發表在 痞客邦 留言(0) 人氣()

最近在研究Media foundation, 弄到自己整個快死快死, 不知道為啥每次在研究新東西的時候, 腦袋都會有那麼一陣子卡住, 所以就跑回去刷刷題, 讓自己的小腦動起來...., 等之後研究差不多, 我再來出幾篇有關於MF的文章吧.

 

Eric 發表在 痞客邦 留言(0) 人氣()

FFmpeg 自從幾年前開始就不再提供編譯好的Lib & DLL, 導致現在現有的libdll都是別人用好的, 於是決定參考網路一些資料, 並且在自己電腦實測, 將編譯的技術分享給各位.

 

文章標籤

Eric 發表在 痞客邦 留言(0) 人氣()

 

 

Eric 發表在 痞客邦 留言(0) 人氣()

 

 

文章標籤

Eric 發表在 痞客邦 留言(0) 人氣()

 






/**
*
*       C++ 中的函數指針模板
*
*       所謂的函數指針模板就是指向函數模板的函數指針.
*
*[問題描述]
*       定義了一類函數模板, 而且這函數模板有共同的街口, 即一致的參數列表, 那麼如何定義一個函數指針,
*       使這個函數指針可以指向這一類中的所有函數模板呢?
*
*  [一]
*       我們先了解一件事情, 在C++裡面, 函數模板僅僅是一個用來生成函數的代碼塊而已,
*       他本身並沒有實體, 有就是沒有與 "未被實例化的那些程式" 相對應的程式代碼塊,
*       所以也就無法對其取地址( 因為就不存在啊, 怎麼會有地址?),
*       所以只有在用具體類型代替模板參數, 對該模板進行實例化以後才能有函數實體.
*
*       而這些函數指針要指向函數的入口地址, 那麼既然函數模板沒有具體的內存地址, 那麼指向函數模板的函數指針如何得到地址呢?
*       所以所謂的 " 函數模板指針 " 這個定義是無法通過以下的方法實現的:
*                       templatevoid (*sample)(T& );
*
*  [二]
*       所以就要用以下的方法來實現, 讓模板類與模板函數再一起
*/

 



#include 
using namespace std;


class CA {
public :
        /*
                由於我們在寫這些工具類的方法, 通常我們都是用類的靜態成員函數,
                靜態成員函數的訪問和調用, 是通過ClassType::StaticMemberFunction來實現
        */
        //static int Sum(int a, int b);
        int Sum(int a, int b)
        {
                return a + b;
        }
};



class CB {
public:
        //static float Sum(float a, float b);
        float Sum(float a, float b)
        {
                return a + b;
        }
};




template 
class CC {
public:
        // function pointer type template
        /*
                會使用到typedef 是因為要讓邊義氣明白pClassFunc是一個函數指針類型名(不是函數指針),
                這個類型的函數指針可以指向一個函數,
                被指向的這個函數必須滿足以下條件: 返回值為 ParaType,
                參數列表為 (ParaType, ParaType), 而且是一個定義在ClassType類中的成員函數.
                注意: 需要再作用域標示符號後面, 函數指針類型名之前, 一定要加上*(dereference),
                表明要定義的是函數指針類型.
                如果不加上這個操作符號, 那這邊就會變成對一個名叫pClassFunc的函數成員進行泛化了,
                那麼typedef關鍵字的存在似乎就沒有意義了
        */
        typedef ParaType(ClassType::*pClassFunc)(ParaType, ParaType);

        // function pointer method
        ParaType Result(ClassType* pClassType, pClassFunc fun, ParaType a, ParaType b) {
                /*
                        使用這個函數指真實, 需要創建一個類的實例, 對於函數指針的fun所指向的成員函數, 需要由實例來完成調用.
                */
                return (pClassType->*fun)(a, b);
        }
};

void main()
{
        CA ca;
        CC cc;
        int a = 3;
        int b = 4;
        printf("A+B : %d \n", cc.Result(&ca, &CA::Sum, a, b));


        CB cb;
        CCfcc;
        float fa = 3.3f;
        float fb = 4.6f;

        printf("A+B : %f \n", fcc.Result(&cb, &CB::Sum, fa, fb));
}


image

Eric 發表在 痞客邦 留言(0) 人氣()


RAII 是C++之父 Bjarne Stroustrup提出來的, 是一種關於物件導向的資源管理, 那為什麼要提出這個呢, 是因為C++這語言沒有資源回收機制, 就因為這樣, 所以我們在寫的時候, 會有機率產生Memory leak, 而RAII主要就是為了解決這個問題提出來的.

Eric 發表在 痞客邦 留言(0) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼