而智能指標可以幫助我們解決這個問題
在C++11,STL已經有內件shared_ptr,但是速度很慢,而大部分在比賽時會用到的只有引用計數的概念(可以參考Brain大神的blog),因此我將引用計數(參考自 C++ Template 侯捷譯)部分特別獨立出來,做了一份模板
以下為模板:
用法:
reference_pointer<int> a;//建立一個int的引用指標a a = new_reference(5);//a指向新增int動態變數,其值為5 a = new_reference<int>(5);//同上,只是定義較為嚴謹 a = new_reference((int)5);//同上,只是定義較為嚴謹 reference_pointer<int> b = a;//將b指向a所指向之物 struct P{ int a,b; P(int _a,int _b):a(_a),b(_b){} }p(2,3); reference_pointer<P> a;//建立一個P的引用指標a c = new_reference(P(1,2));//指向新增P動態變數,其值為1,2 c = new_reference<P>(P(1,2));//同上,只是定義較為嚴謹 c = new_reference(p);//指向新增P動態變數,其值為p
其他的用法可以由下面的代碼看出來(HOJ Problem : 226 - K. CP AC代碼):
其使用了[持久化][分裂/合併式]隨機二分搜尋樹
持久化的部分會在之後介紹
朝聖~~
回覆刪除