偶爾來避難的地方~
我一般編程的時(shí)候,喜歡用我自己設(shè)計(jì)的string類,最近在設(shè)計(jì)結(jié)構(gòu)體的時(shí)候,我想到了一個(gè)適合結(jié)構(gòu)體使用的string類的設(shè)計(jì)方法,不過可能我比較孤陋寡聞,這個(gè)方法以前就有人實(shí)現(xiàn)過,不過還是記錄下來。一般來說,string,至少需要保存一個(gè)char*的指針和一個(gè)int的長(zhǎng)度,復(fù)雜點(diǎn)的,可能還需要更多的成員。這樣的話,我們需要至少8個(gè)字節(jié)來保存這個(gè)string對(duì)象(32bit下)。在部分場(chǎng)合,我們可能會(huì)希望把一個(gè)指針替換為一個(gè)string對(duì)象,或者把一個(gè)string對(duì)象,替換為一個(gè)指針,而且我們對(duì)結(jié)構(gòu)體的大小很敏感,union也行不通。如果我們放一個(gè)string的指針,那么我們就需要new一個(gè)string對(duì)象出來,然后string內(nèi)部再去new一個(gè)char[]的數(shù)組。為此,我想了一個(gè)辦法來解決這個(gè)問題。我在string內(nèi)部引入一個(gè)context的東西,它保存了所有string的成員變量,然后結(jié)尾是字符串?dāng)?shù)組,形似下面這個(gè)結(jié)構(gòu):
Powered by: C++博客 Copyright © 飯中淹